文章目录
前言
本人是在读大一学生,通过在校学习C语言获得学习经验,欢迎大家来进行指导批评,将记录宝贵建议,虽然是基础知识,祝诸位功不唐捐,玉汝于成。
一、什么是switch语句?
switch条件语句是一种常见的选择语句,与if条件语句不同,当判定的条件和要求过多的时候,用if-else语句更复杂,而switch条件语句针对表达式进行判断,选择并确定这一段代码。
switch关键字后面会有一个表达式case,case关键字后有目标值,当表达式的值和某个目标值case相匹配的时候,会执行对应的case语句,最后调出printf函数进行输出。
if条件语句是
“ 如果满足if后的条件,就进行相应的处理,否则的话就进行else,另一种处理。”
1.1switch语句演示
代码如下(示例):
在下面的语法中,调用switch条件语句进行在case匹配判断,如果找到相对应的case,则输出结果,如果并未找到想匹配的case,则输出default里的内容。
switch(表达式)
{
case 目标值1:
执行语句1
break;//跳转语句,后有详细注释,作用为终止循环,执行循环体外的第一条语句
case 目标值2:
执行语句2
break;
.......
case 目标值n:
执行语句n
break;
default: //default的作用就是switch语句里所有的case都不成立时所要执行的语句。如果case中的所有条件都不满足,就默认为default后所表示的。
执行语句n+1
break;
}
二、跳转语句
2.1 break语句
1.break语句终止当前循环。
2.当switch条件语句中的case目标值成立,break终止当前循环后,循环体当中的其他break跳转语句不在运行,可以理解为break智能终结距离最近的switch。
3.在多重循环中,只会跳出向外一层。
4.break不能直接引用if语句,除非if属于循环内部的语句。
代码如下(示例):
分数分层案例
#include <stdio.h>
int main()
{
float grade;
printf("请输入一个分数:grade=");
scanf("%f",&grade);
switch((int)grade/10)
{
case 10:
case 9:printf("优秀\n");break;//终结的是case 9的结果。
case 8:printf("良好\n");break;
case 7:printf("中等\n");break;
case 6:printf("及格\n");break;
case 5:printf("不及格\n");break;
case 4:printf("不及格\n");break;
case 3:printf("不及格\n");break;
case 2:printf("不及格\n");break;
case 1:printf("不及格\n");break;
case 0:printf("不及格\n");break;
default:printf("您输入的分值不在0-100内\n");break;
}
return 0;
}
执行过程:
1.判断你输入的数字取决于那个范围,计算并判断表达式。
2.从第一个目标值case开始,进行范围配对,如果输入的数字符合第一个case目标值的范围,那么执行break函数,结束循环体,并直接输出printf后所打出的内容。
3.如果输出的数字与第一个目标函数case不相等,就跳过case1,继续比较case2,case3…,一旦输入的数字找到了属于自己的范围,那么直接按照执行过程2输出内容。
4.如果输入的数字不属于case1到case10,那么就执行default语句后的内容。由于default语句是最后一个分支,匹配后就不会再次执行其他分支,所以后面可以不使用break语句。
注意
1.任何case分支,如果该分支符合表达式,那本行和其下的所有行都会执行。直到遇到break,或者default。如果有break,那就跳出循环了,只执行两个重复语句的前者。如果在第一个语句没有碰到break,在第二个语句碰到了,那就执行两次。
2.case后面可以接字符对应的ASCll值,但是后不能后面接含任何变量
3.default语句并不是必须要加的,如果输入的内容在case中没有相匹配的值,那么就什么也不执行。
总结
本篇文章说的是switch语句和break语句,通过一个分数案例,来了解break是如何中止,default语句的特殊性。
欢迎大家指导批评,如果有语句不充分或者表达模糊,请指导,如果觉得写的好的话点个赞再走!!!我会利用其他时间更新下一章continue和go to语句。