鱼C论坛

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

小白不懂

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

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

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

x
#include<stdio.h>

int main()
{
        char isRain, isFree;
        
        printf("是否有空?(Y/N)");
        scanf("%c",&isFree);
        
        printf("是否下雨?(Y/N)");
        scanf("%c",&isRain);
        
        getchar();
        
        if(isFree == 'Y') 
        {
                if(isRain == 'Y')
                {
                        printf("记得带伞");
                }
        }
        else
        {
                printf("ta没空");
        }
        
        return 0; 
}

为什么输入Y回车Y 后,直接就跳出去了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

或者在第9行加一句 getchar();试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

修改方法:在第一个scanf语句之后添加一行语句:getchar()用来读取舍弃回车换行字符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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

里面那个if进行判断的时候你的 isRain里面存放的是回车,所以不满足条件。那程序运行完了肯定就退出了呀
想知道小甲鱼最近在做啥?请访问 -> 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-1 09:04:52 From FishC Mobile | 显示全部楼层
哈哈学习了,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-3 10:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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