switch用来控制要执行哪些语句。
用法:
int data;
switch(data){
case 1://当data等于1的时候执行语句A
语句A;
break;//如果这里的break删了,下面的一个case中的语句B也会执行
case 2:
语句B;
break;
case 3:
语句C;
break;
case 4:
语句D;
break;
default://其它情况的时候执行语句E
语句E;
}
补充:
-
当某个语句适用于多个情况的时候可以这样写:
int data; switch(data){ case 1: case 2: case 3: 语句A;//当data的值等于1、2、3的时候都会执行语句A break; case 4: 语句B; break; case 5: 语句C; break; }
-
switch的小括号里面支持判断字符
char c; switch(c){ case 'a': 语句A; break; case 'b': 语句B; break; case 'c': 语句C; break; case 'd': 语句D; break; default: 语句E; }
-
switch小括号里面不支持float类型的数据
一些小例子
例一
输入学生的一个成绩,判断等级,85分以上为A,70至84为B,60至69为C,60以下为D
#include <stdio.h>
int main(void)
{
int score;
puts("请输入学生的成绩:");
scanf("%d",&score);
switch(score){
case 85 ... 100://switch中用"..."表示范围,要注意这三个点前后要加空格
puts("成绩等级为A");
break;
case 70 ... 84:
puts("成绩等级为B");
break;
case 60 ... 69:
puts("成绩等级为C");
break;
case 0 ... 59:
puts("成绩等级为D");
break;
default:
puts("成绩输入有误,请确认");
}
return 0;
}
例二
根据路程判断折扣:
s<250没有折扣,
250≤s<500有2%的折扣,
500≤s<1000有5%的折扣,
1000≤s<2000有8%的折扣,
2000≤s<3000有10%的折扣,
3000≤s有15%的折扣
#include <stdio.h>
#include <limits.h>//limits.h中定义了INT_MAX
int main(void)
{
int s;
puts("请输入路程(km):");
scanf("%d",&s);
switch(s){
case 0 ... 249:
puts("没有折扣");
break;
case 250 ... 499:
puts("折扣为%2");
break;
case 500 ... 999:
puts("折扣为%5");
break;
case 1000 ... 1999:
puts("折扣为%8");
break;
case 2000 ... 2999:
puts("折扣为%10");
break;
case 3000 ... INT_MAX:
puts("折扣为%15");
break;
default:
puts("输入有误,请确认");
}
//printf("%d",INT_MAX);//输出结果为:2147483647,因此本例中的路程最大只能输入到2147483647
return 0;
}
本例中的“INT_MAX”不是标准的,其它编译器识别不了,用gcc编译器可识别这个INT_MAX,它属于语言扩展,定义在头文件limits.h中。
(此段文字参考来源:大于和小于SWITCH语句C)