void mul()
{
int x,y,sum = 0;
scanf("%d",&x);
scanf("%d",&y);
while (x != 0){
if (x%2 != 0)
sum = sum + y;
x = x/2;
y = 2*y;
}
printf("%d",sum);
}
int main()
{
char c;
printf("Enter two numbers and y to exit");
//mul();
scanf("%c",&c);
while (c != 'y'){
mul();
}
return 0;
}
在運行此程序時,它不會在給出輸入'y'時退出。爲什麼?這裏是否有邏輯錯誤?
您將遇到'scanf()'讀取整數將爲'scanf()'讀取要處理的字符的新行。您應該通過打印您讀取的數據進行調試,以便了解該程序是否獲得了您認爲正在獲得的輸入內容。你也應該測試'scanf()'的返回值;如果您有早期的EOF,您會得到奇怪的行爲,或者當您期望數字數據時,會得到非數字數據。 –