小白不懂
#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 后,直接就跳出去了 跳出去是什么意思?程序结束?
我还应该是等着你接着输入吧,你的getchar还在等待输入
或者在第9行加一句 getchar();试试 原因是你对scanf函数的了解不够深入。scanf函数中空格、制表符、回车换行都为默认分隔符,但是在读取%c的时候,则会被当做一般字符处理,因此在你的程序中,输入Y回车Y,则isFree的值是'Y',isRain的值是回车字符,在下面的if…else…语句块中没有这种组合的输出,因此才会看上去像是直接跳出。
修改方法:在第一个scanf语句之后添加一行语句:getchar()用来读取舍弃回车换行字符。 因为回车键也算一个字符,第一次问你是否有空,输入Y和回车,现在等于你输入了两个字符。但是第一个scanf
一次只接收一个字符,也就是只取走了Y,把回车留下了。然后下面又问你,又输入了Y和回车,现在一共有三个
字符,分别是 回车,Y, 回车。那紧接着的scanf函数肯定把回车接收了呀。然后 isFree == ‘Y’进入if,
里面那个if进行判断的时候你的 isRain里面存放的是回车,所以不满足条件。那程序运行完了肯定就退出了呀 本帖最后由 jackz007 于 2019-2-28 16:34 编辑
scanf() 语句不接收回车符,阻碍了后续 getchar() 获取期望的键盘输入。
请参考此贴:https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=131093&pid=3767856 哈哈学习了,谢谢! 最后在每个输入之后都加上一个getchar(),这是好习惯!
第一个输入时得加上一个,为了防止程序还在等待你输入,小甲鱼老师说过!
这是c
c++就不用了!
页:
[1]