鱼C论坛

 找回密码
 立即注册
查看: 2742|回复: 3

[已解决]((a=getchar())!='\n'与getchar()!='\n'的区别

[复制链接]
发表于 2018-3-20 20:16:18 | 显示全部楼层 |阅读模式

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

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

x
最后一张图的描述是 输入一段英文语句 计算有多少字母。
前几张的问题是 输入一段英文语句 计算有多少大写字母。
我在想为什么计算大写字母的时候 要将getchar赋值于ch  while((ch=getchar())!='\n' 我写的是 while((a=getchar()))意思都一样啦。
这是为什么?我感觉这个赋值是多余的所以去掉了 但是去掉后就如图
3所示 输入大写字母 系统显示 无大写字母。
鱼大神救救我想了好久~~~
最佳答案
2018-3-20 20:34:46
getchar() 从键盘缓冲区获得一个字符。
你每getchar() 一次获得一个字符
如果你想用获得到的字符做比效的话,
要么如:
getchar() == 'a' 判断是等于 a
或者 用先变量保存,再比效
ch = getchar()

ch == 'a'

==========================================
像你这代码中的
while(getchar() != '\n')
{
   if(a>='A' && a<='Z') // 大哥,你这a 从哪里取值??????,难道天上会掉给它值
}

==============================================
另有代码 记得上代码。



老师的正确答案

老师的正确答案

我将ch赋值去掉后

我将ch赋值去掉后

能编译但是结果不一致为什么?

能编译但是结果不一致为什么?

老师领一个图

老师领一个图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-20 20:34:46 | 显示全部楼层    本楼为最佳答案   
getchar() 从键盘缓冲区获得一个字符。
你每getchar() 一次获得一个字符
如果你想用获得到的字符做比效的话,
要么如:
getchar() == 'a' 判断是等于 a
或者 用先变量保存,再比效
ch = getchar()

ch == 'a'

==========================================
像你这代码中的
while(getchar() != '\n')
{
   if(a>='A' && a<='Z') // 大哥,你这a 从哪里取值??????,难道天上会掉给它值
}

==============================================
另有代码 记得上代码。



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

使用道具 举报

发表于 2018-3-20 20:35:51 | 显示全部楼层
你如果不写赋值语句,也就是不写a = getchar()这个,你接下来还要用 a 和 'A' 'Z'比较呢

不写 a 都没有定义,你比较什么啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-21 15:03:35 From FishC Mobile | 显示全部楼层
Zmynx_2017 发表于 2018-3-20 20:35
你如果不写赋值语句,也就是不写a = getchar()这个,你接下来还要用 a 和 'A' 'Z'比较呢

不写 a 都没有 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-29 13:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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