for语句课后题整数求和,为什么我的代码计算不正确啊?
#include<stdio.h>int main()
{
int sum = 0,temp = 0,status;
while(status == 1)
{
printf("请输入一个合法的数字:");
status = scanf("%d",&temp);
sum = sum + temp;
}
printf("结果是:%d",sum);
return 0;
} 因为你多加了一个3
即 1 + 2 + 3 + 3
最后一次它还加了个三 本帖最后由 jackz007 于 2021-9-23 16:13 编辑
错误原因是,当最后键入非数字字符时,temp 仍然参与了计算,而这个时候的 temp 是前一次输入的数字 3。
修改方法是,只有在确定 temp 输入有效的情况下,才进行累加。
#include<stdio.h>
int main()
{
int sum = 0 , temp = 0 , status ;
do {
sum += temp ;
printf("请输入一个合法的数字:") ;
} while (scanf("%d" , & temp) == 1) ;
printf("结果是:%d\n" , sum) ;
} jackz007 发表于 2021-9-23 16:11
错误原因是,当最后键入非数字字符时,temp 仍然参与了计算,而这个时候的 temp 是前一次输入的数 ...
谢谢大佬,明白了, 大马强 发表于 2021-9-23 16:03
因为你多加了一个3
即 1 + 2 + 3 + 3
最后一次它还加了个三
谢谢大佬,明白了,
页:
[1]