|
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 num = 0;
long sum = 0L; // 0L表示类型为long的0
int status;
do
{
printf("请输入合法的数字:");
status = scanf("%d", &num);
sum = sum + num;
} while(status == 'p');
printf("结果是:%ld\n", sum);
return 0;
}错的
1.不应该是遇到p跳出吗?那个1是啥 ?
2.为什么要把 sum = sum + num;写在 status = scanf("%d", &num);这个的后面?
现指出错误 如下图 为什么 status == 1 也在 图里 说啦
为什么 ①在②上面
我们不妨 计算 1 和 2 的值
①在②上面 :
先走 sum = sum + num 为0
键入num = 1 (整数) status = 1 while条件为真 继续走
sum = sum + 1 为 1
键入num = 2 (整数) status = 1 while条件为真 继续走
sum = sum + 1 为 3
键入 q(非整数) status = 0 whlie条件为假 循环结束
sum = 3
①在②下面 :
先走 键入 num = 1(整数) status = 1
sum = sum + num 为1 while条件为真 继续走
键入 num = 2 (整数 ) status = 1
sum = sum + num 为 3 while条件为真 继续走
键入 num = q(非整数 ) status = 0
sum = sum + num 为 5 (num值之前赋值为2 键入q的时候 num值不变) while条件为假 循环结束
sum = 5
我说的可能有点啰嗦 尽可能想让up 知道问题 在哪 ,不知道明白没有 不清楚 可以 再 联系
|
-
最佳答案
查看完整内容
现指出错误 如下图 为什么 status == 1 也在 图里 说啦
为什么 ①在②上面
我们不妨 计算 1 和 2 的值
①在②上面 :
先走 sum = sum + num 为0
键入num = 1 (整数) status = 1 while条件为真 继续走
sum = sum + 1 为 1
键入num = 2 (整数) status = 1 while条件为真 继续走
sum = sum + 1 为 3
键入 q(非整数) status = 0 ...
|