《C语言程序设计-循环例子.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计-循环例子.ppt(28页珍藏版)》请在三一办公上搜索。
1、C 语言程序设计基础篇,第 7 章 简单程序设计之二,2023/7/5,本章内容提要,多分支选择结构switch语句循环嵌套break语句和continue语句 程序举例,2023/7/5,教学目标,在三种基本结构的基础上,结合本章介绍流程控制的其他几个语句:switch语句、break语句和continue语句及循环的嵌套,实现复杂的算法,设计出结构清晰、功能强大的程序,对C语言程序开发设计有比较深刻的认识。,2023/7/5,7.1 多分支选择结构程序设计,1、语句形式:,switch(表达式)case 常量1:语句1;case 常量2:语句2;case 常量3:语句3;.case 常量n
2、:语句n;default:语句n+1;,根据表达式的不同值,选择不同的程序分支,又称开关语句。,数值型或字符型,常量表达式的值必须互不相同,否则执行时将出现矛盾,即同一个开关值,将对应多种执行方案。,2023/7/5,2、语句执行流程:,指语句的最后一条是否为break,简单语句或复合语句,case语句出现的次序并不影响执行结果。,2023/7/5,void main()int n;printf(请输入成绩:);scanf(%d,【例7.1】编写程序,对学生成绩进行等级评定。将成绩分为几个等级:059分为不及格,6069分为及格,7079分为中等,8089分为良好,90100分为优秀。要求输入
3、一个成绩,输出其对应的等级。,请输入成绩:78成绩78的等级为中等成绩78的等级为及格 成绩78的等级为不及格,出错啦!?,2023/7/5,在“switch”语句中,“case 常量表达式”只相当于一个语句标号,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,因此会继续执行所有后面语句的情况。为此,语言提供了一种break语句,其功能是可以跳出它所在的switch语句。,2023/7/5,将上面的例7.1修改如下:,void main()int n;printf(请输入成绩:);scanf(%d,请输入成绩:78成绩78的等级为中等,202
4、3/7/5,使用switch语句时还应注意以下几点,switch后面圆括号内表达式的值和case语句中常量表达式的值,都必须是整型的、枚举型的或字符型的,不允许是浮点型的。在case后的各常量表达式的值不能相同。每个case子句既可以是一条语句,也可以是多条语句。当是多条语句时,不需要用花括号括起来。各个case子句和default子句的先后顺序可以变动,而不会影响程序执行结果。default子句可以省略不用。多个case的后面可以共用一组执行语句。如例7.1中等级为优秀的判断程序可改为:,2023/7/5,switch(int)(n/10)case 10:case 9:printf(成绩%d
5、的等级为优秀n);break;,2023/7/5,7.2 嵌套循环结构程序设计,在一个循环内又完整地包含另一个循环,称为循环的嵌套。for语句可以与while语句、do-while语句相互嵌套,构成多重循环,例如:,2023/7/5,(1)(2)for()do while()for()while();(3)(4)while()for()for()for(),2023/7/5,for(i=1;i=9;i+)打印第i行;,【例7.2】打印乘法小九九表。,使用一个循环9次的循环语句,每次循环打印一行:,打印第i行,循环i次,每次循环打印一个表达式:,for(j=1;j=i;j+)打印第j个表达式;,
6、打印完一行后换行,2023/7/5,#include void main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;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=4
7、98*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=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81,2023/7/5,【例7.3】百鸡问题。,#includestdio.hvoid main()int x,y,z;for(x=1;x=20;x+)/*用嵌套的for循环依次设公鸡有1,2,20只*/for(y=1;y=33;y+)/*设母鸡有1,2,33只*/for(z=3;z100;z+=3)/*设小鸡有3,6,99只*/if(x*5+y*3+z/3=100,程
8、序运行结果如下:公鸡4只、母鸡18只、小鸡78只公鸡8只、母鸡11只、小鸡81只公鸡12只、母鸡4只、小鸡84只,2023/7/5,7.3 break语句和continue语句在循环中的应用,break语句只能用在switch语句或循环语句中,其作用是跳出switch语句或跳出本层循环,转去执行后面的程序。由于break语句的转移方向是明确的,所以不需要语句标号与之配合。break语句的一般形式为 break;注意:break语句对if-else的条件语句不起作用。在多层循环中,一个break语句只向外跳一层。使用break语句可以使循环语句有多个出口,2023/7/5,continue 语句
9、,continue语句只能用在循环体中,其一般格式是:continue;其语义是:结束本次循环,即不再执行循环体中continue 语句之后的语句,转入下一次循环条件的判断与执行。应注意的是,本语句只结束本层本次的循环,并不跳出循环。continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。1)while(表达式1)if(表达式2)break;,2)while(表达式1)if(表达式2)continue;,2023/7/5,2023/7/5,【例7.4】输出100以内能被7整除的数。,#include stdio.h void main(
10、)int n;for(n=1;n=100;n+)if(n%7!=0)continue;printf(%d,n);printf(n);,程序运行情况如下:7 14 21 28 35 42 49 56 63 70 77 84 91 98,2023/7/5,【例7.5】判断m是否素数,#include#include int main()int m,i,k;scanf(%d,2023/7/5,7.4 程序举例【例7.6】模拟自动饮料机,#include stdio.hvoid main()int button;printf(=自动饮料机=n);printf(1.可口可乐n);printf(2.雪碧n
11、);printf(3.百事可乐n);printf(4.芬达n);printf(5.非常可乐n);printf(请按15键选择饮料:n);scanf(%d,2023/7/5,switch(button)case 1:printf(n你获得一听可口可乐n);break;case 2:printf(n你获得一听雪碧n);break;case 3:printf(n你获得一听百事可乐n);break;case 4:printf(n你获得一听芬达n);break;case 5:printf(n你获得一听非常可乐n);break;default:printf(n非法操作!n);,程序运行情况如下:=自动饮料
12、机=1可口可乐2雪碧3百事可乐4芬达5非常可乐请按15键选择饮料:3你获得一听百事可乐,2023/7/5,【例7.10】数组元素排序冒泡排序(以升序为例),排序过程:比较第一个数与第二个数,若为逆序a0a1,则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置重复上述过程,共经过n-1趟冒泡排序后,排序结束,2023/7/5,例,38,49,76,97,13,97,27,97,30,97,13,76,76,76,27,30,13,65,27
13、,65,30,65,13,13,49,49,30,49,27,38,27,38,30,38,2023/7/5,#include main()int a10,i,j,t;printf(Input 10 numbers:n);for(i=0;iaj+1)t=aj;aj=aj+1;aj+1=t;printf(The sorted numbers:n);for(i=0;i10;i+)printf(%d,ai);,2023/7/5,【例7.11】数组元素排序选择排序(以升序为例),排序过程:首先通过n-1次比较,从n个数中找出最小的,将它与第一个数 交换第一趟选择排序,结果最小的数被安置在第一个元素位置上再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换第二趟选择排序重复上述过程,共经过n-1趟排序后,排序结束,2023/7/5,例,初始:49 38 65 97 76 13 27,i=1,13,49,一趟:13 38 65 97 76 49 27,i=2,27,38,六趟:13 27 38 49 65 76 97,2023/7/5,