楼主朋友,你的程序写的基本可以了,问题出在
scanf ("%f%f",&a,&b);
printf ("请输入一个符号(+ - * /)");
c = getchar () ;
scanf函数读取完数据后,在输入缓冲里面还有 回车符 没被读走,所以 getchar()会读到这个字符。因此要先读走它再说。
因此改成下面的就好了
scanf ("%f%f",&a,&b);
fflush(stdin);
printf ("请输入一个符号(+ - * /)");
c = getchar () ;
如果你不想修改的话,那就在输入两个数据后紧接着输入运算符,注意是紧接着输入,中间不要有任何其他符号,比如不能有空格什么的。
#include
int main ()
{
float a,b;
char c ;
printf ("请输入两个数");
scanf ("%f%f",&a,&b);
printf ("请输入一个符号(+ - * /)");
getchar();//接收回车产生的getchar
c = getchar () ;
switch (c)
{
case '+' : printf("%.2f",a+b);break;
case '-' : printf("%.2f",a-b);break;
case '*' : printf("%.2f",a*b);break;
case '/' : printf("%.2f",a/b);break;
default : printf ("输入错误!");
}
}
已改
我猜 scanf 输入后键盘有残余的输入缓冲。
在 c = getchar (); 前面加入 fflush(stdin); 清除键盘输入缓冲看看结果?