|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
关于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;
-
- }
复制代码
因为你写的代码中status=1之后就没有变过,for中的条件一直成立就会无限循环。
再者是scanf()函数接受一个与对应类型的数据时返回1,如果是两个数据返回2。所以只需要在循环中scanf前加上status=就行了。
|
-
题目
|