#include <stdio.h>
int main (void)
{
int cash,num10s,change;
printf("please enter the amount you wish to withdraw\n");
scanf("%d", &cash);
num10s = (cash / 10);
change = (cash % 10);
printf("%d",change);
while (change != 0);
{
printf("please enter a value in 10s\n");
scanf("%d",&cash);
change = (cash % 10);
}
printf("sucess\n");
return (0);
}
即使更改值为0,while循环仍将运行一次迭代。为什么这样,我该如何缓解这个问题
答案 0 :(得分:4)
您的代码中存在拼写错误。 变化
while (change != 0);
到
while (change != 0)
;
循环之后的while
导致循环无限运行,因为
while (change != 0)
也可以写成
while (change != 0) {}
答案 1 :(得分:2)
因为在while循环关闭括号后你有一个分号。
答案 2 :(得分:1)
这是我最大的理由说明你不应该把花括号放在自己的行上
while (change != 0);
{
printf("please enter a value in 10s\n");
scanf("%d",&cash);
change = (cash % 10);
}
看起来不错,但是在while语句之后真的是分号意味着它与
相同while (change != 0) {
// do nothing
}
printf("please enter a value in 10s\n");
scanf("%d",&cash);
change = (cash % 10);
如果你只把你的大括号放在与它的关键字相同的行上,那么你会看到while (...) {
和function(...);
之间的差异更大,并且添加分号的机会更少结束了while循环中的“空块”。
答案 3 :(得分:1)
在while语句的末尾有一个分号,它终止了该行本身的while语句。将while语句更改为while(change! =0){}