关于C语言学习的课后题
关于C语言S1E14的动动手第1题,看了答案觉得有点迷糊~我自己写的也很迷糊,程序运行不对,一出现字符整个程序就无限循环“请输入合法数字了”,不知道问题出在哪麻烦大家帮我看一下吧~
题目是:1. 写一个程序,对用户输入的整数进行求和。当用户输入任意字符时,结束程序并打印结果
第一个程序是答案给的代码
#include <stdio.h>
int main()
{
int num = 0;
long sum = 0L; // 0L表示类型为long的0
int status;
do
{
printf("请输入合法的数字:");
sum = sum + num;
status = scanf("%d", &num);
} while(status == 1);
printf("结果是:%ld\n", sum);
return 0;
}
第二个是我写的的代码
#include<stdio.h>
int main()
{
int i,status;
int sum =0;
printf("请输入合法的数字:");
scanf("%d",&i);
status = scanf("%d",&i);
for(sum=0;status==1;)
{
sum = sum +i;
printf("请输入合法的数字:");
scanf("%d",&i);
}
printf("结果是:%d",sum);
return 0;
}
我直接说你的代码好了,自己琢磨琢磨,反正有答案了。
如果随用户输入任意次数,那么不能用 for。 for 最大的特点就是限制循环次数。如果用 for 会有很大的限制。
应该是进了循环之后才 scanf()
还是 for 循环也没关系,你应该在前面设 int status = 1 ,那么如果用户输入非数字,就会结束循环。 因为你写的代码中status=1之后就没有变过,for中的条件一直成立就会无限循环。
再者是scanf()函数接受一个与对应类型的数据时返回1,如果是两个数据返回2。所以只需要在循环中scanf前加上status=就行了。 DASHUAIZI 发表于 2018-8-4 11:47
因为你写的代码中status=1之后就没有变过,for中的条件一直成立就会无限循环。
再者是scanf()函数接受一个 ...
十分感谢~已经解决了! claws0n 发表于 2018-8-3 22:44
我直接说你的代码好了,自己琢磨琢磨,反正有答案了。
如果随用户输入任意次数,那么不能用 for。 for 最 ...
十分感谢 ! ! 谢谢提醒怕噢!~{:5_109:}
页:
[1]