代码如下:
#include <stdio.h>
int main()
{
float fFloat1=.0,fFloat2=.0;
char cOP=NULL;
printf("请输入要进行四则运算表达式:\n");
scanf("%f%c%f",&fFloat1,&cOP,&fFloat2);
switch(cOP)
{
case '+':
printf("%f+%f=%f\n",fFloat1,fFloat2,fFloat1+fFloat2);
break;
case '-':
printf("%f-%f=%f\n",fFloat1,fFloat2,fFloat1-fFloat2);
break;
case '*':
printf("%f*%f=%f\n",fFloat1,fFloat2,fFloat1*fFloat2);
break;
case '/':
if(0!=fFloat2)
{
printf("%f/%f=%f\n",fFloat1,fFloat2,fFloat1/fFloat2);
}
else
{
printf("error!\n");
}
break;
default:
printf("error!\n");
break;
}
return 0;
}
扩展资料
switch语句和if语句的区别:
1、大于等于(>=)、小于等于(<=)的判断用if语句,而等于(=)的判断用switch语句。
2、switch语句中的case类似于if…else…else if…else,但是离散值的判断。(离散值的判断自认为是等于情况的判断)。
3、switch一般都可以及用if重写,但是if不一定能用switch重写。
4、不要忘了break.C#中break不写是不行的,除了合并case的情况。
5、case 中的值必须是常量,不能是变量、表达式。
参考资料来源:
break、default也要加分号
我的c定义的是字符表示运算符号,switch中case后面的default之后有大括号
按照您说的,我只用加分号就可以正确运行了,可是我还有一个问题,如何判断除法运算中的分母是否为0?
不好意思之前的看错了,这个分母靠代码if直接判断
main()
{
float a,b,d;
unsigned char c;
printf("\n Input dat a:");
scanf("%f",&a);
printf("\n Input dat c:");
scanf("%c",&c);
printf("\n Input dat b:");
scanf("%f",&b);
switch(c)
{
case '+': d=a+b;printf("%fa%c%fb=%f\n");break;
case '-': d=a-b;printf("%fa%c%fb=%f\n");break;
case '*': d=a*b;printf("%fa%c%fb=%f\n");break;
case '/': d=a/b;printf("%fa%c%fb=%f\n");break;
default:printf("error");break;
}
getch();
}
2014-10-18
最后一个case后面也得有break
谢谢,按照您说的,已经可以正确运行。
可是我还有一个问题,如何判断除法中的分母是否为0?
在switch前面加上一个if语句来判断b是否为0
#include<stdio.h>
int main()
{
float a,b,d;
char c;
printf("请输入两个数");
scanf("%f",&a);
scanf("%c",&c);
scanf("%f",&b);
if(b==0)
printf("分母不能为0");
else
{
switch(c)
{
...
}
}
return 0;
}