时间:2022-12-18 11:00:41 | 栏目:C代码 | 点击:次
我们先了解switch是什么,翻译过来的中文意思是开关,在C语言中是指选择不同的开关即不同的分支来完成语句。接下来讲一下switch的结构和基本使用。
一般的switch语句的结构 switch(n){ case 1: 语句1; break; case 2: 语句2; break; case 3: 语句3; break; default: 语句4; break; }//当然我们一般也喜欢用{}来包括case后面得语句和break 即case 常量/表达式:{ 语句; 语句; break; }
switch语句是从case进,break出,case后面只能跟常量或者常量表达式
,n是一个变量,与if不同的是,if是判断表达值是真或假
,而switch判断的是变量中储存的值具体是多少
,然后根据这个值寻找对应的case,当所有的case均无法进入时会进入default这个最后的入口
。switch的使用情况一般就是菜单使用和成绩表等的等级划分等。菜单使用相信大家能够理解,n为不同的值的时候我们会进行不同的操作,那么成绩表的等级划分是什么情况呢?
如果你要把九十分以上的人认作是优秀,八十分以上定义成良好 七十分以上为,中等六十以上不及格,六十以下不及格 你该怎么设计程序根据一个人的分数打印他的等级呢? 或许你会选择这样的一串代码 if(n>=90) printf("优秀"); else if(n>=80) printf("良好"); else if(n>=70) printf("中等"); else if(n>=60) printf("及格"); else printf("不及格"); 这个代码可以清晰的表示你的意思,这样分支代码会有点搓 而switch十分适合这种,这个时候肯定会有朋友们疑惑, case后面只能跟一个具体的常量,不能跟一个范围,那么一个一个 的写 case 100 case 99 case 98 . . case 0 但并不是这样实现的,一般就行等级规划的时候都是有一个共同的特点 我们既可以根据这个特点来设计switch switch(n/10){ case 10: case 9: case 8: case 7: case 6: default : }//具体的代码实现就写到这,主要是分享思路
前面只是浅谈了switch,接下来看两张图片帮助你深入了解switch,并认清switch和if的区别
第一次画图,可能画的有点难看,希望见谅
看完这两张图后,我们来深入了解switch
了解了switch的具体结构及其与if的区别,接下来讲一下如何灵活的运用switch,或者在试题中如何
分析答案
高级的switch使用,其实就两个要点,灵活利用break和合理对case进行适当的排序 比如刚刚的成绩划分程序,100分和九十多分是一样的,我们可以进行这样的简化 case 10: case 9: printf("优秀"); break; 其实这种情况非常的简单,大家实际遇到或者运用的时候或许会复杂很多 但是只要找到程序的特点,并且记住switch的结构以及牢记到达出口的条件, 大家就可以很轻松的分析程序,并且在慢慢的积累中熟练的掌握。
switch同样也可以嵌套,看着或许复杂,但在培养了一定的程序的思维之后并不难理解,接下来用这个代码来帮助大家简单的理解switch的嵌套使用。
这段代码可用于判断科举时进士的前三甲 #include<stdio.h> int main(){ int n; //存放名次,并用于判断 printf("请告诉我你的排名:"); scanf("%d",&n); switch (n / 30) { case 0: //n/30等于0,即前三十名,进入下一层switch switch (n) { case 1: printf("状元"); //第一名状元 break; case 2: printf("榜眼"); //第二名榜眼 break; case 3: printf("探花"); //第三名探花 break; default: printf("进士及第"); //其余是进士及第 } break; case 1: //n/30等于1为30-59名 switch (n) { //进入下一层switch,30进士及第,其余同进士及第 case 30: printf("进士及第"); break; default: printf("同进士及第"); } break; case 2://60-89名,进入下一层switch switch (n) { //60名为最后一位进士,其余全部落榜 case 60: printf("同进士及第"); break; default: printf("很遗憾你落榜了"); } break; default: printf("很遗憾你落榜了"); } return 0; } default因为是最后的入口,所以可以省略break 但在还未灵活使用break和case时建议不要省略break
循环简单来说就是,重复反复的进行一些同样的操作,这个时候为了节省代码量,提高代码的美观性时,我们会用循环语句来包装那些重复的语句,而循环语句中不断执行的语句被称为循环体。
下面大家可以根据这个简单的图来理解循环
这只是其中的一种循环,为了达到美好的生活,我们不停的学习,敲代码,买彩票,直到拿到工作或者彩票中大奖,希望大家看完之后能简单理解循环。
在switch中,break是一个传送门,直接带我们走到出口,在循环中也是同样的,break会打破最近的一层循环,作为一个传送门带我们达到美好新生活而不需要判断是否中奖或者是否有offer
continue在循环中的作用是结束这次循环开始下一次循环,我更喜欢称它为闪现,那什么叫结束本次循环呢,比如我们在学习后加上一个continue,我们就不需要再敲代码和买彩票了,但和break不同,它还需要进行下一次循环,走出循环的条件只有两个就是不符合判定循环条件和break打破循环,当遇到continue时程序会直接结束本次循环,然后到达循环判定条件处来进行判定,以判断是否要进行下一次循环,并不能直接送你到达出口。