永发信息网

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

答案:4  悬赏:30  手机版
解决时间 2021-11-20 16:08
  • 提问者网友:温柔港
  • 2021-11-19 15:24
C语言,scanf语句不知道为什么被跳过了
最佳答案
  • 五星知识达人网友:有你哪都是故乡
  • 2021-11-19 15:41
因为我们在输入第一组的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楼网友:动情书生
  • 2021-11-19 19:07
#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;}
  • 2楼网友:摆渡翁
  • 2021-11-19 18:31
把 scanf("%d %d",&a,&b); 改为

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

因为你多输入了一个回车,这个回车键会放在系统输入缓存中,被下一个 scanf 函数检测到
所以导致输入错误了
  • 3楼网友:千杯敬自由
  • 2021-11-19 17:10
#include"stdio.h"
int main(){
 int a,b; 
 char Operator;
 printf("please input two number:");
 scanf("%d %d ",&a,&b);//已改不然operator会接收
 printf("please input Operater(+ or -):");
 scanf("%c",&Operator);
 switch(Operator)
 {case '+': printf("%d+%d=%d ",a,b,a+b);break;
 case '-': printf("%d-%d=%d ",a,b,a-b);
 break;default : printf("Input error ");
 }
 return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯