问题描述
- 循环哪里出错了,逻辑错误查找,高手帮帮忙
-
#include
int main()
{
int donation=0,amount=0; //donation代表每次捐献的金额,amout代表总额
while(amount<10) //捐款超过十万就不再接受捐献
{
scanf("%dn",&donation);
amount=amount+donation;
}
printf("%d",amount);
return 0;
}为什么每次输入的总额超过十万才能中止while循环,而实际输出的捐款额却是10万,
比如我输入8,1,1共计10万却不能退出循环,而必须要输入8,1,1,1共计11万,才能中止
循环,而输出的总额却是10万.
解决方案
devmiao之前是对的,去掉n,你没有听她的。
解决方案二:
while(1) //捐款超过十万就不再接受捐献
{
scanf("%dn",&donation);
if (amount+donation >10) break;
amount=amount+donation;
}
printf("%d",amount);
return 0;
}
解决方案三:
换成
scanf("n%d", &donation);
解决方案四:
你对while的理解有问题
while只在循环开始的时候判断。
你的程序执行到amount=amount+donation;超过了10,它这次循环还是会执行,此时amount已经超过10了。
解决方案五:
我调试时问题不是你说的那样,实际上当我依次输入1,2,3,4时,无法输出,必须输入一个新的数字比如5,但你看输出还是10,说明amount还是10,
而不是如你所说的超过10;
我依次调试发现我的scanf输入比较慢,输入1后必须输入2,donation的值才变成1,这让我百思不得其解,你单步调试下,不要想当然.有时候这样1个bug
会害死人的
我觉得我对while理解没有问题,你说while 只在循环开始时比较,那一开始条件符合的情况下,while就成死循环了
解决方案六:
1 2 3 4当然不行,因为是 > 10,=10的时候还是会执行循环。
解决方案七:
一开始条件符合的情况,也不会死循环
解决方案八:
好像是scanf的双引号里不要加空格**
如果你加了空格,每输一个数就要按一次空格!****
解决方案九:
好像是scanf的双引号里不要加空格**
如果你加了空格,每输一个数就要按一次空格!****
解决方案十:
while(amount<10) //捐款超过十万就不再接受捐献
{
scanf("%d",&donation); //不能要 n
amount=amount+donation;
}
printf("%d",amount);