lonely_patient92
ζ眼泪诉柔情
2021-03-16 21:29
采纳率: 50%
浏览 33

为什么无法输入运算符???

#include<stdio.h>
int main()
{
    int a,b,c;
    char d;
    printf("请输入两个运算字符:\n");
    scanf("%d %d",&a,&b);
    printf("运算符(+,-,*,/,%):");
    scanf("%c",&d);
    if(d=='+'){c=a+b;}
    else if(d=='-')
    {c=a-b;}
    else if(d=='*')
    {c=a*b;}
    else if(d=='/')
    {c=a/b;}
    else if(d=='%')
    {c=a%b;}
    printf("%c",c);
}

 

  • 点赞
  • 收藏

2条回答 默认 最新

  • qq_44104785
    开发者小峰 2021-03-16 21:47
    已采纳

    因为scanf("%c",&d);把你的回车或者空格给接收了

    点赞 1 评论
  • cpp_learner
    cpp_learner 2021-03-17 08:19

    是输入缓冲区搞得问题,在输入a,b后清空输入缓冲区即可。

    还有最后printf是%d,不是%c。除非你想输出字符。

    #include<stdio.h>
    int main() {
    	int a, b, c;
    	char d;
    	printf("请输入两个运算字符:\n");
    	scanf_s("%d %d", &a, &b);		// 输入完成后,还会留存一个回车符'\n'在输入缓冲区中					1.
    
    	// 解决办法,输入a,b后,清空输入缓冲区即可。														3.
    	char cc;	// 清空输入缓冲区
    	while ((cc = getchar()) != '\n');
    
    	printf("运算符(+,-,*,/,%):");	// 到此输入,会优先从输入缓冲区中读取字符,导致无法输入。			2.
    	scanf_s("%c", &d);
    
    	if (d == '+') { c = a + b; } else if (d == '-') {
    		c = a - b;
    	} else if (d == '*') {
    		c = a * b;
    	} else if (d == '/') {
    		c = a / b;
    	} else if (d == '%') {
    		c = a % b;
    	}
    	//printf("%c", c);		// 这里是 %d
    	printf("%d", c);
    
    	return 0;
    }

    点赞 1 评论

相关推荐