[课后作业] S1E14:for语句和循环嵌套
for语句和循环嵌套课后作业没懂:动动手第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("请输入合法的数字:");
sum = sum + num;
status = scanf("%d", &num);//scanf返回值是它按照格式符成功赋值的个数,现在是%d,只要输入的是整型都返回1,不是的话就返回0
} while(status == 1);
printf("结果是:%ld\n", sum);
return 0;
} jhq999 发表于 2022-1-18 07:02
我都看懂了,不知道你哪没看懂?
没看懂循环条件,循环条件是status==1,但是status=scanf("%d",&num);这里是我输入一个值赋值给num然后给status那如果我输入不是1怎么办循环就结束吗? 摸你穷 发表于 2022-1-18 13:31
没看懂循环条件,循环条件是status==1,但是status=scanf("%d",&num);这里是我输入一个值赋值给num然后给 ...
输入不是数字的字符scanf的返回值就是0 jhq999 发表于 2022-1-18 15:33
输入不是数字的字符scanf的返回值就是0
不是很懂如果我输入2的话循环条件是status==1,那么循环也是会结束的啊。是我scanf函数没看懂吗,不是数字的字符scanf的返回值是零。这句我没懂。
摸你穷 发表于 2022-1-18 16:41
不是很懂如果我输入2的话循环条件是status==1,那么循环也是会结束的啊。是我scanf函数没看懂吗,不是数 ...
输入2返回值是1,status==1为真继续循环,输入a,返回值是0,status==1为假,退出循环 摸你穷 发表于 2022-1-18 16:41
不是很懂如果我输入2的话循环条件是status==1,那么循环也是会结束的啊。是我scanf函数没看懂吗,不是数 ...
转贴
1. scanf 函数是有返回值的,它的返回值可以分成三种情况
1) 正整数,表示正确输入参数的个数。例如执行 scanf("%d %d", &a, &b);
如果用户输入"3 4",可以正确输入,返回2(正确输入了两个变量);
如果用户输入"3,4",可以正确输入a,无法输入b,返回1(正确输入了一个变量)。
2) 0,表示用户的输入不匹配,无法正确输入任何值。如上例,用户如果输入",3 4",返回0。
3) EOF,这是在stdio.h里面定义的常量(通常值为-1),表示输入流已经结束。在Windows下,用户按下CTRL+Z(会看到一个^Z字符)再按下回车(可能需要重复2次),就表示输入结束;Linux/Unix下使用CTRL+D表示输入结束。
jhq999 发表于 2022-1-18 17:33
转贴
我明白了这里status = scanf("%d",&num);这里如果因为是%d输入整数形式就可以成功赋值,成功赋值一次status就等于1,如果输入字符或小数就赋值失败,没有成功赋值status就等于0,对不对 jhq999 发表于 2022-1-18 17:33
转贴
老哥回个话啊老哥{:10_269:} 摸你穷 发表于 2022-1-19 16:41
老哥回个话啊老哥
你不是已经理解了吗? jhq999 发表于 2022-1-19 17:02
你不是已经理解了吗?
追后问个问题skanf("%d",num) 如果输入字符或小数直接就不能赋值而不会对应ASCII码对吗 摸你穷 发表于 2022-1-19 22:32
追后问个问题skanf("%d",num) 如果输入字符或小数直接就不能赋值而不会对应ASCII码对吗
对,
强调一下小数
以上面转贴的例子为例
输入3.4
返回值是1,a=3,b未被赋值
页:
[1]