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,您会得到奇怪的行为,或者当您期望数字数据时,会得到非数字数据。 –