在上篇内容中我们学习了基本的if-else语句明白了语句的含义、也了解了基本的写法这里再一次贴出基本写法的形式以及我们在练习题中的写法用文字可以表达为一个基本的if语句由一个关键字if开头跟上在括号里的一个表示条件的逻辑表达式然后是一对大括号{}之间的若干条语句。如果表示条件的逻辑表达式的结果不是零那么就执行后面跟着的这对大括号中的语句否则就跳过这些语句不执行而继续下面的其他语句。事实上if和else语句后面可以没有大括号{}在写完圆括号及其内部的条件之后不用写分号而是换行后直接写条件成立之后的一条语句。注意由于没有了大括号我们的if只能够包含其后的一条语句。整体形式如下总的来说要不要写大括号主要是看条件成立之后的操作复不复杂。倘若条件成立后有多条操作那就必须写大括号反之若条件成立后的操作只有一条就不必写大括号但是写了大括号也不算错只是增加了代码量而已。所以在这里给出一个建议在if和else语句后都加上大括号这样就不会出现混乱和错误的情况这种习惯在我们接下来要介绍的内容中更为重要。在日常生活中影响一件事的因素不是二元化的换句话来说一个结果的出现可能是多个因素所导致的。所以出现“条件1——条件2——条件3——结果”这样的情况是十分常见的因此我们在编程的时候也需要考虑这种情况。接下来我们利用一道综合的例题来探究if-else语句中的嵌套、级联以及switch-case语句的使用方法。例题如下我们需要做一个成绩评定系统题目要求很清晰我们来一步一步做第一步要求我们使用switch-case语句来循环显示操作菜单由于我们还没有学到循环怎么写所以我们目前只能做一个“一次性”的菜单。要完成这个任务我们首先需要知道switch-case语句是什么、怎么用。首先switch-case语句属于多分支选择语句简单理解就是你面前有三个门标号为123。每个门后有对应的通道你需要输入一个数字以进入不同的门这就叫做多分支的选择。这似乎与我们前面所学到的if-else语句的功能比较类似倘若我们使用if-else语句去完成这样的选择我们需要将我们所输入的数字一条一条的与我们的条件去匹配进而判断也就是可以看到按照程序从上到下的运行顺序当我们输入的值是“3”时我们必须经过前面“1”和“2”的判断。倘若情况分支较少这是可以接受的但只要分支多这会大幅增加程序的运行时间。所以我们使用switch-case语言用来代替if-else if的判断根据一个表达式的值匹配不同分支并执行对应的代码。常用的形式如下对于选择门的问题我们可以将代码改写为换成switch-case之后我们输入数字会进行匹配而不是逐条对比这增加了效率。在上面给出的基本结构中涉及到了switch、case、break、default等词语我们来一个一个解释首先switch这个单词的意思是switch有着改变、切换的意思所以在代码中也起到了切换分支的作用。switch后面括号里的表达式代表的是我们用什么量去匹配这个量只能是整型和字符型字符型我们后面会介绍而不能是浮点型与字符串字符串我们后面会介绍在我们目前这个阶段我们就记住switch后面只能接一个整数。之后是case其释义为这更是直白表达情况的意思例如情况1、情况2等等。要注意case后面必须是常量不能是变量。这很符合常理情况1就是情况1情况a是什么情况另外各个case后面的常量不能重复你不可能在列举分支的时候出现两个内部不同的情况1吧。最后要注意case后面不一定是一个数也可以是计算结果为常数的表达式比如case2也可以是case 11 。最后要注意case后面是冒号“”而不是分号“”接下来再看break我们这里用的是“弄破、暂停”的意思用break以跳出switch。从逻辑上来讲我们进行多分支选择就是为了只执行一种情况后的操作操作完就退出而这个break就起着退出的作用。倘若不写break在完成某种情况之后他会继续向下执行其他case的操作直至碰到break我们成为“穿透”下面举个例子将case2中的break删掉之后我分别输入了1和2。可以看到在输入1之后匹配了case1进而执行1中的输出之后碰到break跳出。而在输入2之后匹配了case2执行了2的输出由于并没碰到break进而继续执行case3中的输出碰到了case3之中的break跳出了switch。最后看default在代码中我们就采用“违约”的意思。我们只有三扇门倘若你输入4就可以被称为违约。因此对于违约的情况我们需要进行一个提示如下图这就是switch-case语句的全部内容接下来我们来解决第一小问有了switch-case的基础之后我们写出这样的代码是很容易的。可以看到在case0的情况里没有写任何语句只有单独的break这意味着我们输入0之后会直接跳出switch从而达到退出的目的。当我们输入1之后我们需要输入分数考虑到分数可能会出现小数所以我们在case1中先提示用户输入成绩之后再用double来定义一个变量来存储我们输入的成绩。存储之后按照题目提示我们先需要利用if-else来验证分数是否在合理范围不合法则要提示用户输入错误。代码如下如果你是一篇一篇笔记学过来的那这个代码的逻辑应该是非常轻松就能读懂的。在case1中先提示用户输入成绩之后用score存储用户的输入倘若不在我们期望的范围内我们就提示用户输入错误。至于代码中出现的“”符号你可以理解为数学中“与或非”中的“与”也就是同时满足前面和后面的情况。至此我们的第二小问也完成了。接下来我们按照题目要求完成成绩等级的判定代码如下当输入的成绩在合理范围内时我们利用更多的if和else来对成绩进行分级由于分级情况较多一组if-else不够用所以我们该用else if用以表达其他情况这里能够看到我们的else if依然写了大括号是因为我们每种情况之后还涉及后续更细的评语。另外考虑到成绩存在小数所以我对原题中的分数评级也进行了一定的改动。最后我们来完成更细的评语代码如下#include stdio.h int main() { int a; printf(请输入你选择的操作\n1录入成绩\n0退出\n); scanf(%d,a); switch(a) { case 0: break; case 1: printf(请录入成绩\n); double score; scanf(%lf,score); if(score 0 score 100){ if(score 90 score 100){ printf(成绩等级:A\n); if(score 95){ printf(学神级别); }else{ printf(继续保持); } } else if(score 80 score 90){ printf(成绩等级:B\n); if(score 85){ printf(离优秀差一步); }else{ printf(还有提升空间); } } else if(score 70 score 80){ printf(成绩等级:C\n); if(score 75){ printf(需再努力); }else{ printf(重视基础); } } else if(score 60 score 70){ printf(成绩等级:D\n); if(score 65){ printf(脱离危险区); }else{ printf(必须警醒了); } } else if(score 60){ printf(成绩等级:F\n); if(score 40){ printf(建议补习); }else{ printf(尽快寻求帮助); } } }else{ printf(分数只能在0-100之间输入错误\n); } break; default: printf(您只能选择0或1\n); } return 0; }注意使用if-else时会用到很多的大括号一定要注意别混乱最好的方式就是写代码时就保持出现if和else if就加括号的习惯。另外在上面的代码中我们发现每一个else if都是对齐的这很像我们电路中的并联结构所以在代码中我们称为else if级联结构。在级联过程中我们还可以对条件进行进一步的简化比如我们在之前的if里已经讨论过大于等于90的情况所以在下面的else if中就不需要再写“ score90”这是逻辑上的简化。这就是if-else语句中的基本内容祝福大家都能像上面的题里那样取得99.99的高分成为C语言高手今天就到这里。