|
10鱼币
本帖最后由 小黑兹 于 2020-4-25 02:53 编辑
答案:
- #include <stdio.h>
- int main()
- {
- double i =0, j = 0;
- int status;
-
- do
- {
- printf("请输入合法的数字:");
- do
- {
- j = j + i;
- status = scanf("%lf", &i);
- //printf("j=%.2lf,i=%.2lf,status=%d", j, i, status);
-
- }while(getchar() != '\n' && status == 1);
-
- }while(status == 1);
-
- printf("结果是:%.2lf", j);
-
- return 0;
- }
复制代码
关于这一段
- do
- {
- j = j + i;
- status = scanf("%lf", &i);
- //printf("j=%.2lf,i=%.2lf,status=%d", j, i, status);
-
- }while(getchar() != '\n' && status == 1);
复制代码
为什么要用getchar()!='\n'&&status==1。
status==1不是说扫描到非%d的输入scanf的返回值为0就结束吗?
并且我实验了一下发现scanf是先扫描了第一个数然后跳过了下一个字符(如‘a’,并且只能跳一个字符,不然会出现错误)继续扫描直到结束。
关于这跳过一个字符这是如何办到的
为什么要用getchar()!='\n'&&status==1。
status==1不是说扫描到非%d的输入scanf的返回值为0就结束吗?
scanf结束了,但是while循环还要继续
并且我实验了一下发现scanf是先扫描了第一个数然后跳过了下一个字符(如‘a’,并且只能跳一个字符,不然会出现错误)继续扫描直到结束。
关于这跳过一个字符这是如何办到的
scanf根据格式判断输入是否满足,底层用指针顺序移动而已,如果格式不匹配,就结束
|
最佳答案
查看完整内容
为什么要用getchar()!='\n'&&status==1。
status==1不是说扫描到非%d的输入scanf的返回值为0就结束吗?
scanf结束了,但是while循环还要继续
并且我实验了一下发现scanf是先扫描了第一个数然后跳过了下一个字符(如‘a’,并且只能跳一个字符,不然会出现错误)继续扫描直到结束。
关于这跳过一个字符这是如何办到的
scanf根据格式判断输入是否满足,底层用指针顺序移动而已,如果格式不匹配,就结束
|