求助,关于c语言循环输入scanf的问题,如下所示:

do
{
printf("\n是Y/否N进行新的计算: (Y/N) ? ");
// getchar();
scanf("%c",&W);
printf("\n%c,%d",W,W);
if(((W=='Y')||(W=='y'))!=1)
break;
}
while(1);
经过测试发现若是输入Y或y后,第二次自动跳出。检测发现是scanf未能连续输入。为什么为什么?????????????


小唯快跑啊
浏览 204回答 2
2回答

回首忆惘然

do { printf("\n是Y/否N进行新的计算: (Y/N) ? ");// getchar();scanf("%c",&W);printf("\n%c,%d",W,W);fflush(stdin);if(((W=='Y')||(W=='y'))!=1) break;} while(1);这样既可知道为什么么?假设你只是输入一个 Y 然后回车,scanf函数也只是读取了Y这个字符而已,你的回车符没有被读走,于是下一次循环的时候,scanf读取到的就是一个回车符,因为退出了循环,就那么简单
打开App,查看更多内容
随时随地看视频慕课网APP