c语言编译正确 怎么运行不了呢

从键盘输入2个数,再输入一个运算符,如果输入+,输出两数之和;如果输入-,输出两数只差;如果输入*,输出两数之积;如果输入/,输出两数之商

img

img


#include<stdio.h>
int main()
{int a,b;
char c;
scanf("%d%d%c",&a,&b,&c);
switch (c)
{
case'+':
printf("%d",a+b);
case'-':printf("%d",a-b);
case'':printf("%d",ab);
case'/':printf("%d",a/b);
}
return 0; }

错了

img


你如果打这个空格的话 这个空格就被c接收到了,然后switch无法正常识别,自然没输出了。

希望对题主有所帮助,可以的话,帮忙点个采纳!

首先,你这里获取输入的时候,没有设置格式控制,就是没有告诉程序如何区分到哪里接收哪个变量。如果你的代码是scanf("%d %d %c", &a, &b, &c),这样的话,程序会以空格区分每个输入的变量,你可以输入1 2 +;如果你的代码是scanf("%d-%d-%c", &a, &b, &c),这样的话,程序会以-区分每个输入的变量,如你可以输入1-2-+。这样按照格式输入,就不会出问题了。
其次你每种case处理完之后,建议写break退出或者其他处理逻辑,并且设置没有匹配到case中情形的处理逻辑,也就是通常的default

你reutrn 0跑main函数出去了

复制出来帮你运行一下看看

/ 这一类型的还需要讨论一下b是否为零
规范一下格式

看代码没看出来问题。

建议先写死a,b,c的值,看看是不是输入的问题,逐步排查原因