案例
上面的问题使用if多分支很简单,但是题目要求使用switch语句,我们来复习一下switch语句
switch语句()括号内是表达式,case后必须接整形常量(不能添加范围),且case语句必须与break语句配合才能让分支跳出,不加break语句将继续执行下一条语句。
那么是否可以适当缺少break语句来实现数值范围呢?答案是肯定的。
#include<stdio.h>
int main() {
int sell = 0, money = 0, tmp = 0;
double prize = 0;
printf("输入销售额:\n");
scanf("%d", &sell);
tmp = money / 1000;
money = 500 + sell;
switch (tmp) {
case 0:
case 1:
prize = 0;
break;
case 2:
case 3:
case 4:
prize = money * 8.0 / 100.0;
break;
case 5:
case 6:
case 7:
case 8:
case 9:
prize = money * 10.0 / 100.0;
break;
default:
prize = money * 12.0 / 100.0;
break;
}
printf("%.2lf", prize + money);
return 0;
}
不推荐使用switch语句计算范围数值问题,可能造成数据丢失等情况,并且代码冗长,可读性不好的。