首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

初学C语言,做个简单计算器时遇到一点有关问题

2013-01-01 
初学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);
就能进入运行了
想不明白呀
书上有例子,但我不想知道怎么改,我想大家帮我解释下为什么会出现这种情况

[解决办法]
回车键被当成了你输入的字符
[解决办法]
引用:
C/C++ code?12345678910111213141516171819202122232425262728293031323334353637#include<stdio.h>main(){    int jia,shu,zong;    char faz,jue;    float ong;    do    {        printf("请输入一个式子"……


==================================================================================================
刚接触经常会遇到这样的问题..没事.以后的学习中..遇见的多了...你就会明白的....
这是个缓冲区问题....因为回车生成的  换行符 残留在 输入流中了...就是缓冲区吧...当下次scanf()读取的适合...就把那个换行符也给读取了...所以你要清空下缓冲区....就是每次在scanf()之后都要清空一下...在后面加个getchar();  后者是...fflush(stdio);  都可以...

热点排行