2 u011475211 u011475211 于 2014.12.15 16:01 提问

一个简单的循环问题,大家帮忙下

学校捐款,超过十万就停止捐款,帮忙看看我的程序哪里出问题了,得不到想要的结果

#include
int main()
{
int donation=0,amount=0;
while(amount<10) //捐款超过十万就不再接受捐献
{
scanf("%d\n",&donation);
amount=amount+donation;
}
return 0;
}

7个回答

devmiao
devmiao   Ds   Rxr 2014.12.15 16:03
已采纳

scanf("%d",&donation);

caozhy
caozhy 这就是正解。
大约 3 年之前 回复
devmiao
devmiao   Ds   Rxr 2014.12.15 16:04

不过,最好加个输出。

devmiao
devmiao   Ds   Rxr 2014.12.15 16:32

本来就是这样,如果你希望像你说的那样,得这么写
amount=amount+donation;
if (anount > 10) break;

devmiao
devmiao 自己调试下就知道,while的条件只在循环开始前判断。
大约 3 年之前 回复
u011475211
u011475211 我知道你说的那样可以,但我只想知道我这个为什么不行,求解惑,不想打基础的时候就不了了之,用while循环就不行吗,我觉得我这个没有逻辑上的错误啊?
大约 3 年之前 回复
javanet2
javanet2   2014.12.15 16:09

死循环 amount+donation 2个都为0,能大于等于10吗??

u011475211
u011475211 不是有scanf吗,输入数字不就超过0了吗?接着输入就超过10了,比如8 1 1 1
大约 3 年之前 回复
nanke1006
nanke1006   2014.12.15 16:41

这么写应该不会死循环的。把<改成=<试试

u011475211
u011475211 对的,为什么每次输入的总额超过十万才能中止while循环,而实际输出的捐款额却是10万, 比如我输入8,1,1共计10万却不能退出循环,而必须要输入8,1,1,1共计11万,才能中止 循环,而输出的总额却是10万.
大约 3 年之前 回复
u011475211
u011475211   2014.12.15 16:26

我试过了不是死循环,我依次输入8 ,1 ,1,1,才能中断while循环,结果是8+1+1+1=11,而不是10

wylblq
wylblq   2014.12.15 17:30

改成scanf("%d",&donation); 把'\n'去掉就好喽。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!