C语言中switch语句的用法总结
一、switch语句的基本概念
switch语句是一种多分支选择语句,它可以根据一个表达式的值,选择执行不同的代码块。switch语句的一般形式如下:
switch (expression) {
case constant-expression1 :
statement(s);
break; /* 可选的 */
case constant-expression2 :
statement(s);
break; /* 可选的 */
/* 您可以有任意数量的 case 语句 */
default:/* 可选的 */
statement(s);
}
其中,expression是一个整型或枚举类型的表达式,它的值会与每个case后面的常量表达式进行比较,如果相等,则执行该case后面的语句,直到遇到break语句或switch语句结束为止。如果没有任何一个case匹配,则执行default后面的语句,如果没有default,则不执行任何语句。
二、switch语句的使用规则
在使用switch语句时,需要注意以下几个规则:
switch语句中的expression必须是一个整型或枚举类型的表达式,不能是浮点型、字符串型或布尔型。
case后面的constant-expression必须是一个常量或字面量,不能是变量或表达式,且必须与expression具有相同的数据类型。
case后面的常量表达式不能重复,否则会导致编译错误。
case和default只起标号的作用,它们本身不控制程序流程,只有break语句才能跳出switch语句。
不是每一个case都需要包含break语句,如果没有break语句,则程序会继续执行后续的case,直到遇到break为止,这称为case穿透现象。
default可以省略,也可以放在任何位置,但建议放在最后,以便处理其他情况。
三、switch语句的优缺点
switch语句相比于if-else语句,有以下几个优点:
switch语句结构清晰,易于阅读和理解。
switch语句执行效率高,比较次数少。
switch语句可以与枚举类型配合使用,增强程序的可读性。
switch语句也有以下几个缺点:
switch语句只能判断等值情况,不能判断范围或其他逻辑关系。
switch语句要求case必须是常量,且不能重复,有一定的局限性。
switch语句容易产生case穿透现象,需要注意添加break语句。
四、switch语句的实例
下面给出几个使用switch语句的实例:
实例1:根据成绩等级输出评价
#include<stdio.h>
int main () {
/* 局部变量定义 */
char grade ='B';
switch(grade) {
case'A':switch case判断字符串
printf("很棒! \n" );
break;
case'B':
case'C':
printf("做得好\n" );
break;
case'D':
printf("您通过了\n" );
break;
case'F':
printf("最好再试一下\n" );
break;
default:
printf("无效的成绩\n" );
}
printf("您的成绩是 %c\n", grade );
return0;
}
输出结果:
做得好
您的成绩是 B
实例2:根据运算符号进行四则运算
#include<stdio.h>
int main () {
char ch; //表示计算符号
int op1=20,op2=10; //表示参加计算的两个数
printf ("输入需要计算类型:\n");
scanf ("%c",&ch);
switch (ch) {
case'+':printf ("%d\n",op1+op2);break;
case'-':printf ("%d\n",op1-op2);break;
case'*':printf ("%d\n",op1*op2);break;
case'/':printf ("%d\n",op1/op2);break;
default:printf ("输入的符号错误! \n");    }
return0;
}
输出结果:
输入需要计算类型:
*
200
实例3:根据图形类型计算面积
#include<stdio.h>
#include<math.h>
int main () {
double radius,length,wide,l1,l2,l3,area,s;
int n;
printf ("1:三角形\n2:矩形\n3:圆形\n");
printf ("请输入相应序号:\n");
scanf ("%d",&n);
switch (n) {
case1:printf ("选择图形的类型:三角形\n");
printf ("side1:");scanf ("%lf",&l1);
printf ("side2:");scanf ("%lf",&l2);
printf ("side3:");scanf ("%lf",&l3);
if (l1+l2 >l3 && l2+l3>l1 && l1+l3>l2)
s = (l1+l2+l3)/2;
else
printf ("输入有错! \n");
area =sqrt (s* (s-l1)* (s-l2)* (s-l3));
printf ("面积:%.2lf\n",area); break;
case2:printf ("选择图形的类型:矩形\n");
printf ("length:");scanf ("%lf",&length);
printf ("wide:");scanf ("%lf",&wide);
area = length * wide;
printf ("面积:%.2lf\n",area); break;
case3:printf ("选择图形的类型:圆形\n");
printf ("radius:");scanf ("%lf",&radius);
area =3.14* radius * radius;
printf ("面积:%.2lf\n",area); break;
default:printf ("输入有错! ");
}
return0;
}
输出结果:
1:三角形
2:矩形
3:圆形
请输入相应序号:
3
选择图形的类型:圆形
radius:5
面积:78.50
五、本文总结
本文介绍了C语言中switch语句的用法,包括基本概念、使用规则、优缺点和实例。switch语句是一种多分支选择语句,它可以根据一个表达式的值,选择执行不同的代码块。switch语句相比于if-else语句,有结构清晰、执行效率高、可读性强等优点,但也有只能判断等值情况、case必须是常量、容易产生case穿透等缺点。在使用switch语句时,需要注意expression的数据类型、case的常量表达式和break语句的使用。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。