鱼C论坛

 找回密码
 立即注册
查看: 3899|回复: 6

小白不懂

[复制链接]
发表于 2019-2-28 14:40:18 | 显示全部楼层 |阅读模式

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

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

x
  1. #include<stdio.h>

  2. int main()
  3. {
  4.         char isRain, isFree;
  5.        
  6.         printf("是否有空?(Y/N)");
  7.         scanf("%c",&isFree);
  8.        
  9.         printf("是否下雨?(Y/N)");
  10.         scanf("%c",&isRain);
  11.        
  12.         getchar();
  13.        
  14.         if(isFree == 'Y')
  15.         {
  16.                 if(isRain == 'Y')
  17.                 {
  18.                         printf("记得带伞");
  19.                 }
  20.         }
  21.         else
  22.         {
  23.                 printf("ta没空");
  24.         }
  25.        
  26.         return 0;
  27. }
复制代码


为什么输入Y回车Y 后,直接就跳出去了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-2-28 14:50:03 | 显示全部楼层
跳出去是什么意思?程序结束?

我还应该是等着你接着输入吧,你的getchar还在等待输入

或者在第9行加一句 getchar();试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-28 15:01:56 | 显示全部楼层
原因是你对scanf函数的了解不够深入。scanf函数中空格、制表符、回车换行都为默认分隔符,但是在读取%c的时候,则会被当做一般字符处理,因此在你的程序中,输入Y回车Y,则isFree的值是'Y',isRain的值是回车字符,在下面的if…else…语句块中没有这种组合的输出,因此才会看上去像是直接跳出。

修改方法:在第一个scanf语句之后添加一行语句:getchar()用来读取舍弃回车换行字符。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-28 15:32:44 | 显示全部楼层
因为回车键也算一个字符,第一次问你是否有空,输入Y和回车,现在等于你输入了两个字符。但是第一个scanf

一次只接收一个字符,也就是只取走了Y,把回车留下了。然后下面又问你,又输入了Y和回车,现在一共有三个

字符,分别是   回车,  Y,    回车。那紧接着的scanf函数肯定把回车接收了呀。然后 isFree == ‘Y’  进入if,

里面那个if进行判断的时候你的 isRain里面存放的是回车,所以不满足条件。那程序运行完了肯定就退出了呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-28 16:26:03 | 显示全部楼层
本帖最后由 jackz007 于 2019-2-28 16:34 编辑

scanf() 语句不接收回车符,阻碍了后续 getchar() 获取期望的键盘输入。

请参考此贴:  https://fishc.com.cn/forum.php?m ... 093&pid=3767856
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-1 09:04:52 From FishC Mobile | 显示全部楼层
哈哈学习了,谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-3 10:43:23 | 显示全部楼层
最后在每个输入之后都加上一个getchar(),这是好习惯!
第一个输入时得加上一个,为了防止程序还在等待你输入,小甲鱼老师说过!
这是c
c++就不用了!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 18:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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