关于c语言中用switch case来进行表达式运算(小白)
#include <stdio.h>int main()
{
int a,b,c;
char sign;
printf("请输入表达式:");
scanf("%d%c%d",&a,&sign,&b);
switch(sign)
{
case '+':c=a+b;
printf("%d+%d=%d",a,b,c);break;
case '-':c=a-b;
printf("%d-%d=%d\n",a,b,c);break;
case '*':c=a*b;
printf("%d*%d=%d\n",a,b,c);break;
case '/':c=a/b;
if(b==0)printf("算式输入错误\n");
else printf("%d/%d=%d",a,b,c);break;
}
return 0;
}
各位热心的网友们帮我看看哪里错了,问题一:被除数为0为什么不输出“算式输入错误”?
问题二:为什么“b=0”和“b==0”运算除数时输出结果不同?
谢谢你们的回应^_^ 本帖最后由 rt3 于 2020-12-3 21:07 编辑
第1个问题
这是编译器的问题。正常情况下 在 c=a/b 那一步就该崩了
如图
第2个问题
b=0是赋值语句,将b赋值为0
b==0只是个布尔表达式,对b的值没有影响 rt3 发表于 2020-12-3 21:04
第1个问题
这是编译器的问题。正常情况下 在 c=a/b 那一步就该崩了
如图
所以不能执行被除数为0那条是吗?如何可以像理想那样当输入被除数为0是输出报错?(顺便问问){:5_96:} 改成这样试试
case '/':
if (b == 0)printf("算式输入错误\n");
else {
c = a / b;
printf("%d/%d=%d", a, b, c);break;
} 本帖最后由 rt3 于 2020-12-3 21:25 编辑
4L那样改就行。也可以这样
case '/':
if (b != 0){
c = a / b;
printf("%d/%d=%d", a, b, c);
break;
}else{
printf("算式输入错误\n");
return 1;
} rt3 发表于 2020-12-3 21:23
4L那样改就行。也可以这样
好的真的太感谢你了{:5_92:}
页:
[1]