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'。为什么呢?
答案 0 :(得分:2)
您没有在while
循环中进行扫描。这样做:
char c = 'n';
while (c != 'y')
{
printf("Enter two numbers and y to exit");
scanf("%c",&c);
mul();
}
当你输入一个像y
或n
这样的字符并点击ENTER键,一个字符(你输入的字符)和一个字符(这是输入击键 - )时,只需指出一些额外的东西。新行字符放在输入缓冲区中。第一个字符被scanf
消耗,但换行符仍然在输入缓冲区中。
解决方案是使用以下内容消耗额外的换行符:
scanf(" %c", &c);
^<------------Note the space
答案 1 :(得分:0)
你做得更好
do{
scanf("%c",&c);
mul();
}while (c != 'y');
答案 2 :(得分:0)
尝试使用此代码或在代码中添加“static int main”。
int Main()
{
char c;
printf("Enter y to exit");
scanf("%c",&c);
while (c != 'y')
{
mul();
} return 0; }
void mul() {
printf("Enter two numbers");
int x,y,sum = 0;
scanf("%d",&x);
scanf("%d",&y); ................ }