鱼C论坛

 找回密码
 立即注册
查看: 8651|回复: 28

S1E14课后问题求助(回帖有鱼币)

[复制链接]
发表于 2021-7-11 13:02:51 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 shriek 于 2021-7-22 19:30 编辑

题目是

写一个程序,对用户输入的整数进行求和。当用户输入任意字符时,
A. 用户可以输入整数和浮点数
B. 用户可以在同一行输入多个数字,数字之间可以是任意一个分隔符(如下图)4*I1JaFBP}
C. 结果保留两位小数Pow

答案是
#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;
}
复制代码


我无法理解为什么输入3a3b5是合法的,是因为scanf和getchar()一起用所以偶数位的字符全部都被跳过了吗?
然后输入空格是合法的是因为内层循环getchar()识别到空格会跳出内层循环但是外层循环不会,所以中间可以有无数个空格吗?

评分

参与人数 1荣誉 +2 鱼币 +1 收起 理由
青出于蓝 + 2 + 1 实在对不起,睡一觉把这事忘了{:5_92:}

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-7-11 13:18:08 | 显示全部楼层
@青出于蓝 哈哈没关系的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-11 13:37:07 | 显示全部楼层
我傻了...........颠覆知识观..
一起坐等大佬吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-11 13:40:10 | 显示全部楼层
青出于蓝 发表于 2021-7-11 13:37
我傻了...........颠覆知识观..
一起坐等大佬吧

哈哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-11 15:17:16 | 显示全部楼层

回帖奖励 +5 鱼币

喜今天不太好
欢姐发户鳄鱼
你说过如果个
的鹅夫人跟个
鱼鹅访问个热
bi虽然噶人感
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-11 15:49:21 | 显示全部楼层

回帖奖励 +5 鱼币

偶數與奇數相加是等於奇數的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-11 15:50:16 | 显示全部楼层
你把它設置成全局變量試試
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-11 16:39:36 | 显示全部楼层

回帖奖励 +5 鱼币

emmm
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-11 22:44:11 | 显示全部楼层

回帖奖励 +5 鱼币

kkkkkk
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-12 09:56:00 | 显示全部楼层

回帖奖励 +5 鱼币

学习学习
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-12 13:13:44 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-12 13:14:22 | 显示全部楼层
kk
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-17 17:15:37 | 显示全部楼层
萝卜里 发表于 2021-7-11 15:17
喜今天不太好
欢姐发户鳄鱼
你说过如果个

藏头诗?可惜不通顺啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-17 20:36:33 | 显示全部楼层
我也是刚学,我的理解是这样的,你看下对不对;合法的原因是do...while语句那里的限定条件,while (getchar() != '\n' && status == 1);  ,也就是只要getchar()没有提取到回车的‘\n’,status是先获取你前面数字的返回值,所以==1;所以会继续进行循环,这里你输入a,b和输入两个逗号或其他符号是一样的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-17 22:47:01 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-17 23:16:05 | 显示全部楼层
来学习的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-18 08:18:29 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-18 08:19:39 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-18 09:12:51 | 显示全部楼层
我来了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-22 14:44:32 | 显示全部楼层
caihong199216 发表于 2021-7-11 15:50
你把它設置成全局變量試試

嗯嗯我已经理解了,不是这个问题。
不是跳过偶数位,是跳过 scanf 函数成功后,后面的那一个字符
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-17 13:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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