C语言问题,为啥运行不了结果呢,,在循环中直接default输入错误

2024-12-03 19:20:03
推荐回答(3个)
回答1:

楼主朋友,你的程序写的基本可以了,问题出在
scanf ("%f%f",&a,&b);

printf ("请输入一个符号(+ - * /)");
c = getchar () ;
scanf函数读取完数据后,在输入缓冲里面还有 回车符 没被读走,所以 getchar()会读到这个字符。因此要先读走它再说。
因此改成下面的就好了
scanf ("%f%f",&a,&b);
fflush(stdin);
printf ("请输入一个符号(+ - * /)");
c = getchar () ;
如果你不想修改的话,那就在输入两个数据后紧接着输入运算符,注意是紧接着输入,中间不要有任何其他符号,比如不能有空格什么的。

回答2:

#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 ("输入错误!");

}
}

已改

回答3:

我猜 scanf 输入后键盘有残余的输入缓冲。
在 c = getchar (); 前面加入 fflush(stdin); 清除键盘输入缓冲看看结果?