1、2023-1-8C 语言程序设计基础篇2023-1-8本章内容提要本章内容提要2023-1-8n在三种基本结构的基础上,结合本章介绍流在三种基本结构的基础上,结合本章介绍流程控制的其他几个语句:程控制的其他几个语句:switch语句、语句、break语句和语句和continue语句及循环的嵌套,语句及循环的嵌套,实现复杂的算法,设计出结构清晰、功能强大实现复杂的算法,设计出结构清晰、功能强大的程序的程序,对,对C语言程序开发设计有比较深刻的语言程序开发设计有比较深刻的认识。认识。2023-1-81、语句形式:、语句形式:switch (表达式)表达式)case 常量常量1:语句语句1;case
2、 常量常量2:语句语句2;case 常量常量3:语句语句3;.case 常量常量n:语句语句n;default:语句语句n+1;。数值型数值型或或字符型字符型常量表达式的值必须常量表达式的值必须互不相同,否则执行互不相同,否则执行时将出现矛盾,即同时将出现矛盾,即同一个开关值,将对应一个开关值,将对应多种执行方案。多种执行方案。千万不千万不能接能接(;)号号2023-1-82、语句执行流程:、语句执行流程:指语句的最指语句的最后一条是否后一条是否为为break简单语句或简单语句或复合语句复合语句breakbreakbreakbreak有有无breakbreak有无有计算表达式计算表达式常量常量
3、1 1常量常量2 2常量常量n n=语句语句1 1=语句语句2 2语句语句n n其它其它=语句语句n+1n+1无值值casecase语句出语句出现的次序并现的次序并不影响执行不影响执行结果。结果。2023-1-8【例【例7.17.1】编写程序,对学生成绩进行等级评定。将成绩分为几个】编写程序,对学生成绩进行等级评定。将成绩分为几个等级:等级:0 05959分为不及格,分为不及格,60606969分为及格,分为及格,70707979分为中等,分为中等,80808989分为良好,分为良好,9090100100分为优秀。要求输入一个成绩,输出其分为优秀。要求输入一个成绩,输出其对应的等级。对应的等级
4、。请输入成绩:请输入成绩:78成绩成绩78的等级为中等的等级为中等成绩成绩78的等级为及格的等级为及格 成绩成绩78的等级为不及格的等级为不及格 出错啦!?出错啦!?2023-1-82023-1-8将上面的例将上面的例7.17.1修改如下:修改如下:请输入成绩:请输入成绩:78成绩成绩78的等级为中等的等级为中等2023-1-8使用使用switch语句时还应注意以下几点语句时还应注意以下几点 2023-1-82023-1-8在一个循环内又完整地包含另一个循环,称为在一个循环内又完整地包含另一个循环,称为循环的嵌套循环的嵌套。for语句可以与语句可以与while语句、语句、do-while语句相
5、互嵌套,构成多重循环,例如:语句相互嵌套,构成多重循环,例如:2023-1-82023-1-8for(i=1;i=9;i+)打印第打印第i行行;【例【例7.2】打印乘法小九九表。打印乘法小九九表。使用一个循环使用一个循环9次的循环语句次的循环语句,每次循环打印一行:,每次循环打印一行:打印第打印第i i行,循环行,循环i i次次,每次循环打印一个表达式每次循环打印一个表达式:for(j=1;j=i;j+)打印第打印第j个表达式个表达式;打印完一行后换行打印完一行后换行 2023-1-8#include void main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;
6、j+)printf(%d*%d=%-3d,i,j,i*j);printf(n);程序运行情况如下:程序运行情况如下:1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=94*1=4 4*2=8 4*3=12 4*4=165*1=5 5*2=10 5*3=15 5*4=20 5*5=256*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=367*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=498*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=649*1=9 9*2=
7、18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=812023-1-8【例【例7.3】百鸡问题。百鸡问题。程序运行结果如下:程序运行结果如下:公鸡公鸡4只、母鸡只、母鸡18只、小鸡只、小鸡78只只公鸡公鸡8只、母鸡只、母鸡11只、小鸡只、小鸡81只只公鸡公鸡12只、母鸡只、母鸡4只、小鸡只、小鸡84只只 2023-1-87.3 break语句和语句和continue语句语句在循环中的应用在循环中的应用 2023-1-8continue 语句语句2023-1-82023-1-8【例7.4】输出100以内能被7整除的数。程序运行情况如下:程序运行情况
8、如下:7 14 21 28 35 42 49 56 63 70 77 84 91 982023-1-8【例例7.5】判断判断m是否素数是否素数2023-1-87.4 程序举例程序举例【例【例7.6】模拟自动饮料机模拟自动饮料机 2023-1-8程序运行情况如下:程序运行情况如下:=自动饮料机自动饮料机=1可口可乐可口可乐2雪碧雪碧3百事可乐百事可乐4芬达芬达5非常可乐非常可乐请按请按15键选择饮料:键选择饮料:3你获得一听百事可乐你获得一听百事可乐2023-1-8【例【例7.10】数组元素排序数组元素排序冒泡排序冒泡排序(以升序为例)(以升序为例)2023-1-8例38 49 65 76 13
9、 27 30 97 第一趟38 49 65 13 27 30 76 第二趟38 49 13 27 30 65 第三趟38 13 27 30 49 第四趟13 27 30 38 第五趟13 27 30 第六趟49 38 65 97 76 13 27 30 初始关键字n=83849769713972797309713767676273013652765306513134949304927382738303813 27 第七趟2023-1-8输入n 个数给a0 到 an-1for (i=0;in-1;i+)for(j=0;jaj+1真假ajaj+1输出a0 到 an-1#include main()
10、int a10,i,j,t;printf(Input 10 numbers:n);for(i=0;i10;i+)scanf(%d,&ai);printf(n);for(i=0;i9;i+)for(j=0;jaj+1)t=aj;aj=aj+1;aj+1=t;printf(The sorted numbers:n);for(i=0;i10;i+)printf(%d,ai);2023-1-8【例【例7.11】数组元素排序数组元素排序选择排序选择排序(以升序为例)(以升序为例)2023-1-8例初始:49 38 65 97 76 13 27 kji=11349一趟:13 38 65 97 76 49 27 i=22738二趟:13 27 65 97 76 49 38 三趟:13 27 38 97 76 49 65 四趟:13 27 38 49 76 97 65 五趟:13 27 38 49 65 97 76 六趟:13 27 38 49 65 76 97 kkkkjjjjjjjjjj2023-1-8输入n 个数给a0 到 an-1for (i=0;in-1;i+)for (j=i+1;jn;j+)ajak真假k=j输出a0 到 an-1k=iaiaki!=k真假