鱼C论坛

 找回密码
 立即注册
查看: 1068|回复: 4

[已解决]超级简单问题求助

[复制链接]
发表于 2020-11-17 16:11:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

int main()
{
        float num = 0;
        double sum = 0;
        int status;

        do
        {
                printf("请输入合法的数字:");
                do
                {
                        sum = sum + num;
                        status = scanf("%f", &num);
                } while (getchar() != '\n' && status == 1);
        } while(status == 1);

        printf("结果是:%.2lf\n", sum);

        return 0;
}

//就是我这个是要输入数字,然后相加,当输入不是数字的时候退出循环,就是哪个第一个while语句,哪个getchar(),当我输入1再空格再输入2再空格,是不是当我空格的时候,就已经又进行一次内循环了?
最佳答案
2020-11-18 23:08:26
严凯 发表于 2020-11-17 18:23
是我表达错了,应该是第二个do while语句,就是我的意思是,我可以这样输入1 3 4 5然后回车,他又提示我请 ...

因为每次循环scanf时一个一个读取的,getchar也只判断一位,所以只要没有读取到非法字符,status不变,就会一直循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-17 16:18:07 | 显示全部楼层
是的,回为你用的是 do ... while 结构,先运行一次循环体,再进行判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-17 16:39:15 | 显示全部楼层
https://www.runoob.com/cprogramming/c-do-while-loop.html

不像 for 和 while 循环,它们是在循环头部测试循环条件。在 C 语言中,do...while 循环是在循环的尾部检查它的条件。

do...while 循环与 while 循环类似,但是 do...while 循环会确保至少执行一次循环。

也就是,先执行一遍,然后输入1,判断输入是否为数字,以此决定是否执行第二次循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-17 18:23:17 | 显示全部楼层
是我表达错了,应该是第二个do while语句,就是我的意思是,我可以这样输入1 3 4 5然后回车,他又提示我请输入合法的数字,假如我又输入3,然后又提示我,加入我再输入一个q,然后跳出循环,得到结果为16,我就是想问一下,为什么输入1 3 4 5,没有出现问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-18 23:08:26 | 显示全部楼层    本楼为最佳答案   
严凯 发表于 2020-11-17 18:23
是我表达错了,应该是第二个do while语句,就是我的意思是,我可以这样输入1 3 4 5然后回车,他又提示我请 ...

因为每次循环scanf时一个一个读取的,getchar也只判断一位,所以只要没有读取到非法字符,status不变,就会一直循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 13:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表