C语言,scanf语句不知道为什么被跳过了

#include"stdio.h"
int main(){
int a,b;
char Operator;
printf("please input two number:");
scanf("%d %d",&a,&b);
printf("please input Operater(+ or -):");
scanf("%c",&Operator);
switch(Operator)
{
case '+':
printf("%d+%d=%d\n",a,b,a+b);break;
case '-':
printf("%d-%d=%d\n",a,b,a-b);break;
default :
printf("Input error\n");
}
return 0;
}--------------------------------------------------------------------
两个数加减

因为我们在输入第一组的2个数时会输入“回车”,这个回车会被你第二个“scanf”函数捕获,你只要在第二个“scanf”语句前加一句“getchar();”就行了,代码如下:
#include "stdio.h"
int main(){
int a,b;
char Operator;
printf("please input two number:");
scanf("%d %d",&a,&b);
printf("please input Operater(+ or -):");
getchar();
scanf("%c",&Operator);
switch(Operator)
{
case '+':
printf("%d+%d=%d\n",a,b,a+b);break;
case '-':
printf("%d-%d=%d\n",a,b,a-b);break;
default :
printf("Input error\n");
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-06
把 scanf("%d %d",&a,&b); 改为

scanf("%d %d \n",&a,&b);

因为你多输入了一个回车,这个回车键会放在系统输入缓存中,被下一个 scanf 函数检测到
所以导致输入错误了
第2个回答  2014-03-06
#include"stdio.h"
int main(){
 int a,b; 
 char Operator;
 printf("please input two number:");
 scanf("%d %d\n",&a,&b);//已改\不然operator会接收\n
 printf("please input Operater(+ or -):");
 scanf("%c",&Operator);
 switch(Operator)
 {case '+': printf("%d+%d=%d\n",a,b,a+b);break;
 case '-': printf("%d-%d=%d\n",a,b,a-b);
 break;default : printf("Input error\n");
 }
 return 0;
}

第3个回答  2014-03-06
#include"stdio.h"
int main()
{ int a,b;
char Operator;
printf("please input two number:");
scanf("%d %d",&a,&b);
getchar();//接受缓冲区回车!!!!!
printf("please input Operater(+ or -):");
scanf("%c",&Operator);
switch(Operator)
{case '+': printf("%d+%d=%d\n",a,b,a+b);break;
case '-': printf("%d-%d=%d\n",a,b,a-b);break;
default : printf("Input error\n");}return 0;}
相似回答