大家好,欢迎来到IT知识分享网。
目录
1.概念介绍
在C语言中,switch语句是一种选择性控制结构,它允许测试一个变量等于多个值时的情况。每个可能的值称为一个case,且被测试的变量会对每个case进行检查。
switch语句的基本格式为:switch(表达式){case 常量1:语句1; break; case 常量2:语句2; break; default:语句n;}
。其中”表达式”通常是整型或字符型的变量,”case”后面的常量表达式必须与”表达式”的值完全匹配,才能执行该case后的语句。如果匹配成功,程序会执行相应的语句序列,直到遇到break语句才会跳出switch结构。
若”表达式”的值与所有case后的常量表达式都不匹配,则程序会执行default后的语句。需要注意的是,default语句是可选的,如果switch语句中没有default部分,且所有case均不匹配时,switch结构则会跳过,继续执行switch语句之后的代码。
此外,switch语句还支持嵌套使用,即在一个switch结构的内部,可以包含另一个完整的switch结构。这样的嵌套可以使用更复杂的条件判断和分支处理。
看不懂?没关系,从下面开始一点一点来
2.整除
想要学会使用switch,得先了解一些c语言整除的概念,俩int整形变量相除,得到的结果也是整形,只保留整数部分,小数部分直接去掉
比如
#include<stdio.h>c int main() { int a=5; int b=3; printf("5/3=%d\n",a/b); return 0; }
3.switch的使用
在C语言中,switch
语句用于根据一个变量的值执行不同的代码块。以下是使用switch
的基本语法:
switch (变量) {
case 值1:
// 当变量的值等于值1时执行的代码
break;
case 值2:
// 当变量的值等于值2时执行的代码
break;
// …其他case分支…
default:
// 当变量的值不匹配任何case时执行的代码
}
3.1判断整形变量
#include <stdio.h> int main() { int num; printf("请输入一个整数(1-3):"); scanf("%d", &num); switch (num) { case 1: printf("你输入的是1。"); break; case 2: printf("你输入的是2。"); break; case 3: printf("你输入的是3。"); break; default: printf("你输入的不在1-3之间。"); } return 0; }
在这个示例中,我们首先从用户那里获取一个整数,然后使用switch
语句根据该整数的值执行不同的代码块。如果输入的整数是1、2或3,程序将输出相应的消息;否则,它将输出“你输入的不在1-3之间”。
3.2判断字符变量
当然,不仅可以判断整形变量,还能判断字符变量
#include <stdio.h> int main() { char c; printf("请输入一个字符(x/y/z):"); scanf("%c", &c); switch (c) { case 'x': printf("你输入的是x。"); break; case 'y': printf("你输入的是y。"); break; case 'z': printf("你输入的是z。"); break; default: printf("你输入的不在x/y/z之间。"); } return 0; }
3.3 switch中break的作用
在C语言中,break
语句用于跳出当前switch
语句的执行流程。它的作用是防止程序继续执行下一个case
分支中的代码,直到遇到break
或者switch
语句结束。
如果没有break
语句,当一个case
分支的条件满足时,程序会继续执行下一个case
分支中的代码,直到遇到break
或者整个switch
语句结束。这种情况被称为“贯穿”(fallthrough)。
例如,考虑以下代码:
#include <stdio.h> int main() { int num; printf("请输入一个整数(1-3):"); scanf("%d", &num); switch (num) { case 1: printf("你输入的是1。"); case 2: printf("你输入的是2。"); case 3: printf("你输入的是3。"); break; default: printf("你输入的不在1-3之间。"); } return 0; }
在这个示例中,如果用户输入2,程序将输出:
这是因为没有使用break
语句,所以程序会贯穿到下一个case
分支并继续执行。但是,如果我们添加了break
语句,程序将只输出:
你输入的是2。
3.4综合运用
题目
根据用户输入的成绩(0-100分),判断其成绩等级并输出。如果成绩在90分以上(包括90分),则输出”成绩等级:A”;如果成绩在80分以上(不包括90分),则输出”成绩等级:B”;以此类推,直到成绩在60分以下,则输出”成绩等级:E”。如果用户输入的成绩不在0-100分之间,程序会输出”数据输入错误!”。
#include <stdio.h> int main() { int score; printf("请输入成绩:"); scanf("%d",&score); switch (score / 10) { case 10: case 9: printf("成绩等级:A\n"); break; case 8: printf("成绩等级:B\n"); break; case 7: printf("成绩等级:C\n"); break; case 6: printf("成绩等级:D\n"); break; case 5: case 4: case 3: case 2: case 1: case 0: printf("成绩等级:E\n"); break; default: printf("数据输入错误!\n"); break; } return 0; }
代码解释:
scanf输入了一个0-100的变量,然后将其整除10丢给了switch
score的范围是0-100, 那switch/10的范围就是 0-10
- 当score为90-100时,score/10为9或者10
因为90-100都是A,所以先case 10:后没加break跳出,紧接着case 9了
- 当score为[80,90)时,score/10=8
- 当score为[70,80)时,score/10=7
- 当score为[60,70)时,score/10=6
- 当score为[0,60)时,score/10的范围为0,1,2,3,4,5
同理0-60都是不及格,都是E,所以case5: 、case4、…都没加break,直到case 0
当score不在范围内:执行default语句
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/137641.html