鱼C论坛

 找回密码
 立即注册
查看: 1220|回复: 10

[已解决]S1E13课后作业求助

[复制链接]
发表于 2021-1-22 14:38:35 | 显示全部楼层 |阅读模式

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

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

x
查一段语句大写字母的作业
#include<stdio.h>
int main()
{
        int ch,count = 0;
        printf("请输入一段英文:");
        while(getchar()!= '\n')
        {
        if(getchar() >= 'A' && getchar() <= 'Z')
        {
        count = count + 1;
        }
        }
        printf("这段字符中有%d个大写字母",count);
        return 0;
}
我看老师标准答案if语句后面是把getchar()赋值给一个新变量之后引用的是新变量,直接用函数不行么???
初学者,有点蒙了
最佳答案
2021-1-22 14:59:08

你每一次getchar,都会接受一个字符
所以你必须把第一次getchar的结果存起来,在下面用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-22 14:44:14 | 显示全部楼层
你这样写,没有问题。只是你有没有算过,你多写了多少个字符?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-22 14:53:02 | 显示全部楼层
风过无痕1989 发表于 2021-1-22 14:44
你这样写,没有问题。只是你有没有算过,你多写了多少个字符?

哪里多写??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-22 14:59:08 | 显示全部楼层    本楼为最佳答案   

你每一次getchar,都会接受一个字符
所以你必须把第一次getchar的结果存起来,在下面用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-22 15:05:10 | 显示全部楼层

如果用一个变量 ch = getchar(), 那么,后面的都可以用 ch,而你每次都是用 getcahr()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-22 15:34:52 | 显示全部楼层
风过无痕1989 发表于 2021-1-22 15:05
如果用一个变量 ch = getchar(), 那么,后面的都可以用 ch,而你每次都是用 getcahr()

懂了!谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-22 15:35:26 | 显示全部楼层
qiuyouzhi 发表于 2021-1-22 14:59
你每一次getchar,都会接受一个字符
所以你必须把第一次getchar的结果存起来,在下面用

了解!谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-22 15:37:26 | 显示全部楼层

如果问题已解决,请设置【最佳答案】
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-22 15:38:54 | 显示全部楼层

除此之外,还有两点是最重要的:
1、用一个变量节省运行时间,用一个函数运行的时间可想而知;
2、函数 getchar(),每次读取一个字符,读过的字符,就在键盘缓冲区消失了,下一次再调用 getchar() 读取的是另一个字符。换句话说: if(getchar() >= 'A' && getchar() <= 'Z') 这一条语句就读取了两次缓冲区,也就是说 getchar() >= 'A' 读取的是一个字符,getchar() <= 'Z' 读取的是另一个字符,这一点,你用步进调试方式可能看到
综上所述:你的程序循环一次,读取了三个字符 while 一个,if 这里两个,你的程序还能达到你的要的目的吗?

评分

参与人数 1荣誉 +5 收起 理由
南橘喝汽水 + 5 大佬nb!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-1-22 15:41:42 | 显示全部楼层

不好意思,我说话是不是有点大喘气呀?
这是因为我每天只回答十次帖子,今天,你这个帖子我完成了四个,请详解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-22 15:42:50 | 显示全部楼层
风过无痕1989 发表于 2021-1-22 15:41
不好意思,我说话是不是有点大喘气呀?
这是因为我每天只回答十次帖子,今天,你这个帖子我完成了四个, ...

没事没事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 04:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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