初学C语言,做个简单计算器时遇到一点有关问题
初学C语言,做个简单计算器时遇到一点问题#includestdio.hmain(){int jia,shu,zongchar faz,juefloat o
初学C语言,做个简单计算器时遇到一点问题
#include<stdio.h>
main()
{
int jia,shu,zong;
char faz,jue;
float ong;
do
{
printf("请输入一个式子");
scanf("%d%c%d",&jia,&faz,&shu);
switch(faz)
{
case('+'):
zong=jia+shu;
printf("答案为%d",zong);
break;
case('-'):
zong=jia-shu;
printf("答案为%d",zong);
break;
case('*'):
zong=jia*shu;
printf("答案为%d",zong);
break;
case('/'):
ong=jia/shu;
printf("答案为%.1f",ong);
break;
default:
printf("输入错误");
break;
}
printf("是否继续运算Y/N");
scanf("%c",&jue);
}
while (jue=='y');
}
为什么后面那句scanf("%c",&jue);没进入运行??
但是如果我把后面改成
printf("是否继续运算,是的话请输入一个大于5的数字,否反之");
scanf("%d",&jue);
就能进入运行了
想不明白呀
书上有例子,但我不想知道怎么改,我想大家帮我解释下为什么会出现这种情况
[解决办法]回车键被当成了你输入的字符
[解决办法]==================================================================================================
刚接触经常会遇到这样的问题..没事.以后的学习中..遇见的多了...你就会明白的....
这是个缓冲区问题....因为回车生成的 换行符 残留在 输入流中了...就是缓冲区吧...当下次scanf()读取的适合...就把那个换行符也给读取了...所以你要清空下缓冲区....就是每次在scanf()之后都要清空一下...在后面加个getchar(); 后者是...fflush(stdio); 都可以...