应用情况:讨论情况大于等于三种。分类统计、菜单等设计常用;如运算符号中有加减乘除变化形式,以op作为常量进行Switch转换对象。
一、基本形式
switch(表达式的常量)
{
case常量1:
可执行语句序列1
case常量2:
可执行语句序列2
default:
可执行语句序列n+1
}
二、举例
5.5:编程实现简单的计算器功能,要求用户按照如下格式从键盘输入算式:
操作数1 运算符op 操作数2。计算并输出表达式的值。
#include<stdio.h>
int main(void)
{
int data1,data2;
char op;
printf("please enter an expression:");
scanf("%d%c%d",&data1,&op,&data2);
switch(op)(根据输入的运算符确定执行的运算)
{
case'+':(加法)
printf("%d+%d=%\n",data1.data2,data1+data2);
break;(跳出当前循环)
case'-':(减法)
printf("%d-%d=%\n",data1,data2,data1-data2);
break;
case‘*’:
printf("%d*%d=%d\n",data1,data2,data1*data2);
case‘/’:
if(0==data2)
printf("division by zero!\n"); 判断除数是否为零
else
printf("%d/%d=%d\n",data1,data2,data1/data2);
break;
default:
printf("invalid operator!"); 处理非法运算符号
}
return 0;
}
注:
1.如果删除语段中所有的break,那么输出结果将无限制执行运算语句:
"please enter an expression:
12+12=24
12-12=0
12*12=144
……
2.修改语段定义乘号:case'x'或case'X'-即在接下来的运算中x或者X都可以作为乘号使用。
5.6 修改以上程序使得操作可以使用浮点数且可以在运算符和操作数之间加入任意空格
1.新增一:调用数学函数库#include<math.h>,以便使用fabs函数
2.新增二:定义宏常量#define A 1e-7
3.新增三:判断除数是否为0修改为:if((fabs)data2<=A)
4.追加空格:scanf("%f %c%f",&data1,&op,&data2)
5.浮点数运算:float 和%f