《控制语句计算机基础及C语言.ppt》由会员分享,可在线阅读,更多相关《控制语句计算机基础及C语言.ppt(81页珍藏版)》请在三一办公上搜索。
1、程序的三种基本结构 简单语句与复合语句 if条件分支语句 switch多路开关语句 循环语句 循环嵌套 break、continue和goto语句 程序举例,第三章 控制语句,3.1 程序的三种基本结构,C 程序的结构,3.1.1 C 语句的类型,1.控制语句:9种,实现对程序流程的控制2.函数调用语句:任何合法的C函数调用加上一个分号 如:printf(”num=%dn”,num);3.表达式语句:任何合法的C表达式加上一个分号 如:num=1;num+;4.空语句:只有一个分号5.复合语句:用一对大括弧 把若干语句括起来就成为一个复合语句,又称为分程序。如:int a=1;a+;print
2、f(“a=%dn”,a);,3.1.2 三种基本结构,顺序结构即程序按照语句的书写顺序执行。例3-1 按向右及向左对齐的方式显示数据#include void main()int i=4,j=32,k=128,l=1024;printf(”%6d%-6dn”,i,i);printf(”%6d%-6dn”,j,j);printf(”%6d%-6dn”,k,k);printf(”%6d%-6dn”,l,l);,运行结果为:4 4 32 32 128 128 1024 1024,3.1.2 三种基本结构,2.选择结构:指通过对特定条件的判断,来选择一个分支执行,3.1.2 三种基本结构,3.循环结构
3、:在给定的条件下,重复执行某段程序,直到条件不满足为止 While型循环结构 先判断条件,当条件为“真”时,重复执行某段程序,直到条件为“假”为止(2)do-while型循环结构先执行某段程序,然后再判断条件,当条件为“真”时,再重复执行这段程序,直到条件为“假”为止,3.2 简单语句与复合语句,3.2 简单语句与复合语句,简单语句:均是以“;”结尾的语句。z=x+y;c=getchar();复合语句:复合语句是用花招号“”把“说明”和若干个有序的简单语句组合在一起而构成的语句集合。其一般形式是:,3.2 简单语句与复合语句,复合语句实例:int i,j,k;i=i+1;j=j*2;i=i*j
4、;空语句:空语句的含义是什么动作都不执行,语句本身仅有一个分号。while(putchar(getchar()!=0);,3.3 if条件分支语句,if 语句的三种形式 if 语句的嵌套 条件运算符及条件表达式,if 语句中的条件判断都是用一个表达式来表示的。在执行if语句时,会求解这个表达式的逻辑值,因为这个表达式的逻辑值代表了判断的结果:值为“T”,判断成立,值为“F”,判断不成立。因此,if 语句根据判断的结果(成立或不成立)选择执行预先设定的操作,实际上是根据条件判断表达式的逻辑值是“真”是“假”来选择的。,if 语句,if 语句是一种选择控制语句,而且是条件分支控制语句,即总是先进行
5、一个条件的判断,然后根据判断的结果(成立或不成立)选择执行预先设定的操作。,if 语句,一般格式1 if(表达式)语句1;/语句1,只一句。如果表达式为真,执行语句1;否则什么都不做2 if(表达式)语句块1;如果表达式为真,做语句块1的内容;否则什么都不做;,if 语句,一般格式3 if(表达式)语句1;else 语句2;如果表达式为真,执行语句1;否则执行语句24 if(表达式)语句块1;else语句块1;,if 语句的三种形式,举例:实现如图函数,/3_2.cpp#include/预编译命令,将标准输入输出/函数作为头文件void main()/主函数/开始int x,y;/变量x,y为
6、整数类型 coutx;/键盘输入一个整数放入x中if(x0)y=1;/如果x0,则将1赋给yelse if(x=0)y=0;/否则,如果x=0,则将0赋给yelse y=-1;/否则,将-1赋给ycouty=“yendl;/输出y的值/结束,if 语句示例,if 语句示例,NS图,if 语句的三种形式,4.if(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;else 语句n;,如:if(score89)putchar(A);else if(score79)putchar(B);else if(score69)putchar(C);else if(scor
7、e59)putchar(D);else putchar(E);,实际上,这种形式是属于第2种形式的一种特殊情况,是if嵌套语句的一种形式。,2.if(表达式)语句1;else 语句2;,如:if(score89)putchar(A);else if(score79)putchar(B);else if(score69)putchar(C);else if(score59)putchar(D);else putchar(E);,if 语句的三种形式,if语句第3种形式的执行流程图,if 语句的说明,if 语句中,if 后面的表达式可以是任何类型的合法表达式,甚至可以是常量或变量。不管它是什么形式
8、的数据,程序在执行if 语句时,首先求解该表达式,而且是求该表达式的“逻辑值”,得到整数1或整数0,然后再选择执行相应的操作。,如:if(x0)sign=1;,如:if(x)sign=1;,如:if(x+y)sign=1;,如:if(1)sign=1;,if(score=100)printf(“Highest score!n”);,if(score=100)printf(“Highest score!n”);,结果:只有score 的值等于100 时,才会执行printf语句。,结果:不管score 原先的值等于多少,都会执行printf语句。,if 语句的嵌套,在if或else的内嵌语句中又
9、包含一个或多个if语句时,称为if语句的嵌套。常用于多重条件,多个分支的选择判断控制。,if(表达式)语句1;else 语句2;,if(表达式)else,常规的 if 语句,嵌套的 if 语句,?,if与else的配对原则是什么?,注意:C 编译系统总是从if嵌套的最里层开始向外,依次将else与在它前面的最近的if配对。,if 语句的嵌套:例,例:下面4个语句段中,哪些能正确表示出以下的函数关系?y=-1(x 0),(A)if(x!=0)if(x 0)y=1;else y=-1;else y=0;,(B)y=0;if(x=0)if(x 0)y=1;else y=-1;,(C)y=-1;if(
10、x!=0)if(x 0)y=1;else y=0;,(D)if(x 0)y=1;else y=0;,答案:(A)(D),3.4 switch 多路开关语句,switch语句的一般形式,switch语句是多条件判断多分支选择语句,类似于if 语句的第三种形式。,switch(表达式)case 常量表达式1:语句1;case 常量表达式2:语句2;case 常量表达式n:语句n;default:语句n+1;,switch语句使用了3个关键字:switch case default,执行过程:首先求解switch 后表达式具体的值(不是逻辑值),将其值与各个 case后的常量表达式的值对比;若有相等
11、的,则从那个 case 后的语句开始往下执行;若无相等的,则执行default 后的语句。,switch语句一般形式的执行流程图,?,流程好像有问题?,如果表达式的具体值等于常量表达式1 的值,则执行语句1。执行完语句1 后应该结束 switch语句的执行了,可是按照流程图会继续执行语句2,直到语句n+1,显然和设计的流程不同。,switch语句的完整形式,switch语句还可以使用关键字 break。它的作用是结束它所在的switch语句的执行。,switch(表达式)case 常量表达式1:语句1;break;case 常量表达式2:语句2;break;case 常量表达式n:语句n;br
12、eak;default:语句n+1;,switch语句的完整形式如下:,switch语句完整形式的执行流程图,switch语句的有关注意事项,switch语句中,switch 后的表达式可以是任何类型的表达式,系统求解它的具体值而不是逻辑值。绝大多数情况下都是整型或字符型的表达式,即表达式的值为整数或字符。,switch(grade)case E:printf(“Excellentn”);break;case G:printf(“Goodn”);break;case B:printf(“Badn”);break;default:printf(“God knowsn”);,每一个case后表达式
13、只能是常量表达式,即能求解出具体值的表达式,而绝不能是关系表达式或逻辑表达式。通常其类型是和switch后的表达式相对应的。同时,每一个常量表达式的值必须互不相同,否则会出现互相矛盾的现象。,grade是char型变量,每个case后对应着是char型常量,switch(score)case 89:grade=E;break;case 79:grade=G;break;case 60:grade=B;break;default:printf(“God knowsn”);,score是int型变量,case后就应该是int型的常量表达式。,此处case后出现关系表达式是完全错误的。,Switch
14、语句示例,【例3-3】从键盘输入一个月号(112),并显示该月号的英文名称。3_3.cpp#include void main()int month;printf(请输入月份值:);scanf(%d,Switch语句示例,case 6:printf(“六月);break;case 7:printf(“七月);break;case 8:printf(“八月);break;case 9:printf(“九月);break;case 10:printf(“十月);break;case 11:printf(“十一月);break;case 12:printf(“十二月);break;default:p
15、rintf(“月份值错误!);break;,3.5 循环结构,for 循环控制语句 while 循环控制语句 do while 循环控制语句 三种循环语句的比较,循环概述,重复执行某部分代码,就构成循环结构。有限循环:在某个条件满足时重复执行,不满足时结束 无限循环:无条件的重复执行或循环结束条件永远不满足,循环结构的组成要素:循环初始化部分 循环变量或循环计数器 循环继续条件(循环终止条件)循环体(重复执行的代码),4种实现方式:for 语句while 语句do while 语句if+goto 语句注意:前3种是专门的循环控制语句,重点:每种循环语句的执行过程。,3.5.1 for 语句,语
16、法:for(表达式1;表达式2;表达式3)循环体语句,执行过程:首先求解表达式1的具体值;再求解表达式2的逻辑值。若值为“T”,则执行内嵌的循环体语句;若值为“F”,则循环结束,执行for语句下面的语句;求解表达式3的具体值;返回第步,通常:表达式1 用于循环初始化;表达式2 用于描述循环继续条件;表达式3 的用于循环变量的增减,从而使循环继续条件越来越不满足。,for 循环控制语句:例,例3.4:编程计算123n,n=10,#include void main()int prod=1;int n;for(n=1;n=10;n+)prod=prod*n;printf(“1*2*3*%d=%ld
17、n”,n1,prod);,for 语句的有关说明,for 语句语法组成部分多,功能强大,使用非常灵活。,#include/3_5.cppvoid main()int prod=1;int n;for(n=1;n=10;n+)prod=prod*n;printf(“1*2*3*%d=%ldn”,n1,prod);,表达式1可以省略,循环初始化可以放在for语句之前。,long int prod=1;int n=1;for(;n=10;n+)prod=prod*n;,如果表达式2也省略,则成了无限循环。显然这是不允许的。,long int prod=1;int n=1;for(;n+)prod=p
18、rod*n;,long int prod=1;int n=1;for(;n=10;)prod=prod*n;n+;,表达式3也可以省略,把它放回到循环体语句中。,int prod=1;int n=1;for(;n=10;prod=prod*n,n+);,循环体中的部分表达式语句甚至也可以放到表达式3中。只要保证流程正确即可。,for 循环常用于循环次数(循环变量的初值和终值)比较明确的问题中。,for 语句示例,例:课本p82 例3.10从键盘输入100个字符,分别统计其中字母、数字及其它字符的个数。,思路:肯定是用循环来解决。为什么?因为共需一百次读入字符并作相应统计。如何判断字符是字母还是
19、数字?因为字母字符是相连的,数字也是如此,因此可用如下判断语句来判定一个字符是字母字符:(c=a&c=A&c=Z)3_6.cpp,#include void main()char c;int i,letter=0,digit=0,other=0;for(i=0;i=a,3.5.2 while 语句(当型循环),语法:while(表达式)循环体语句;,执行过程:首先求解表达式的逻辑值。若值为“T”,则执行内嵌的语句,然后返回再次求解表达式;若值为“F”,则while语句结束,接着执行其后的语句。,注意:,当循环体包含多于一个语句时,必须用大括号把它们括起来构成复合语句。while(表达式)后没有
20、分号。如果第一次求解表达式,其值就为“F”,则循环体不被执行。,while 循环控制语句:例,例:编程计算123n,n=10 3_7.cpp,#include void main()int prod=1;int n=1;while(n=10)prod=prod*n;n+;printf(1*2*3*%d=%ldn,n-1,prod);,1.下面程序执行的结果是()。#include void main()int n=1;while(n=1)n;printf(“n=%dn”,n);(A)n=0(B)while构成无限循环(C)n=1(D)n=-1,课堂练习:while 语句,答案:(B),2.下面
21、程序执行的结果是()。#include void main()int n=1;while(n=1)n;printf(“n=%dn”,n);(A)n=0(B)while构成无限循环(C)n=1(D)n=-1,课堂练习:while 语句,答案:(A),课堂练习:while 语句,3.下面程序执行的结果是()。#include void main()int n=1;while(n=n 1)n;printf(“n=%dn”,n);(A)n=0(B)while构成无限循环(C)n=1(D)n=-1,答案:(A),课堂练习:while 语句,4.下面程序执行的结果是()。#include void mai
22、n()int n=1;while(n);printf(“n=%dn”,n);(A)n=0(B)while构成无限循环(C)n=1(D)n=1,答案:(D),3.5.3 dowhile 语句,语法:do 循环体语句 while(表达式);,执行过程:首先执行do后的循环体语句,然后求解表达式的逻辑值。若值为“T”,则返回继续执行内嵌的循环体语句;若值为“F”,则dowhile语句结束,接着执行其后的语句。,注意:,当循环体语句多于一个时,必须用大括号把它们括起来构成复合语句。while(表达式)后有分号。不论第一次求解表达式的值是什么,循环体语句至少被执行一次。,dowhile 循环控制语句:例
23、,例:编程计算123n,n=10 3_8.cpp,#include void main()int prod=1;int n=1;do prod=prod*n;n+;while(n=10);printf(“1*2*3*%d=%ldn”,n1,prod);,这后面有分号。,while 语句和dowhile 语句的对比,do while 语句的流程图,while 语句的流程图,一般情况下,同一个问题用 while 语句和 dowhile 语句实现,其循环体都是一样的。但是,有可能循环体被执行的次数是不同的。,while和dowhile循环比较适用于循环次数不太明确,但是循环的终止条件(或循环继续条件
24、)比较明确的问题中。,小强今年12岁,父亲大他20岁。问过多少年父亲年龄是小强年龄的2倍,那时两人分别是多少岁?,#include/3_9.cppvoid main()int son=12,dad=son+20,year=0;while(dad!=son*2)dad+;son+;year+;printf(“%d years pastn”,year);printf(“sons age=%dn”,son);printf(“dads age=%dn”,dad);,课堂练习:,循环次数不太明确而循环终止条件明确的情况。,do dad+;son+;year+;while(dad!=son*2);,whi
25、le(dad+year)!=(son+year)*2)year+;printf(“%d years pastn”,year);printf(“sons age=%dn”,son+year);printf(“dads age=%dn”,dad+year);,自学与比较,请同学们比较如下3种循环的异同之处(1)for循环(计数型循环)(2)while循环(当型循环)(3)do while循环(直到型循环),练习,求 的近似值。求 的近似值的公式为,解题思路:用pi表示的值,它是一个求级数和的计算,计算当最后一项的绝对值小于等于10-6时结束。因此,计算pi的过程是一个循环累加b/a的过程,直到b/
26、a的绝对值小于等于10-6为止,即只要b/a的绝对值大于10-6就要继续循环。3_10.cpp,提问,这种循环当表达式的值永远为真时,会如何?答:会构成死循环,即无休止地执行循环体。请做下面的实验:(1)将b定义为int型,看看执行结果,并分析为什么(2)将1e-6改为1e-7或1e-4,看看结果,3.6 循环嵌套,while()while(),while()do while();,while()for(;),3.6 循环嵌套,在一个循环体内包含另一个循环控制语句称为“循环嵌套”。嵌套的层数不同的系统规定不同。一般来说,实际中最多就用到4层嵌套。最常用的是双重循环。,do do while()
27、;while();,do while();while();,do for(;)while();,for(;)do while();,for(;)while();,for(;)for(;),循环嵌套:,例3_11:课本p83输出1100之间符合如下条件的数:该数的各位数之乘积大于各位数之和,思路:求出该数的每一位,假设一个数为m,则m%10即为其个位数,(m/10)%10即为其十位数,(m/100)%10即为百位数,本题使用双重循环,外循环对1100中的数进行枚举内循环中,计算该数的各位,并进行累加和累乘。,include void main()int n,k=1,s=0,m;for(n=1;n
28、s)printf(%dn,n);,3.7 break语句和continue语句,3.7.1 break 语句,语法:break;用法:用在一个循环控制语句的循环体内。作用:结束整个循环语句,接着执行该语句后面的语句。,break 语句只能用在switch 语句和三种专门的循环控制即while、dowhile和for语句中。用在switch语句中作用是结束它所在的switch语句的执行,接着执行switch后面的语句。用在循环体中作用是结束它所在的循环语句的执行,接着执行该循环语句后面的语句。,注意:,3.7.2 continue 语句,语法:continue;用法:用在一个循环控制语句的循环体
29、内。作用:结束本次循环的执行,即当遇到continue语句时,就跳过该循环体中位于continue后面的语句,接着进行下一次是否继续循环的判断。,continue 语句只能用在三种专门的循环控制语句即while、dowhile和for语句中。,注意:,break 语句和continue 语句的区别,break语句:结束整个循环语句,continue语句:结束本次循环的执行,while(表达式1)if(表达式2)break;,while(表达式1)if(表达式2)continue;,#include void main()int i=1;int n=1234;while(+in)if(n%i=0
30、)printf(not primen);break;if(i=n)printf(primen);,break 语句:例3.12,例:编程判断一个数值n是否为质数 3_12.cpp,用+in作循环的结束语句,表面上需对所有小于n的数进行判断。,如果有小于n的数能整除n说明n不是素数,用 break 语句结束循环。,#include void main()int i=0;for(i=1;i=9;i+)if(i=5)continue;printf(“%dn”,i);,continue 语句:例3_13,例:打印出1至9的每一个数字,但不包括5在内 3_13.cpp,3.8 程序举例,程序举例3_14
31、:题目及分析,例:求 Fibonacci 数列的前40个数。该数列满足递推公式f1=1,f2=1;fn=fn-1+fn-2,分析:题目需要计算累加,应该用到循环语句。用那种循环语句来控制呢?根据题目考虑用for语句比较合适。怎么循环?我们把前40个数的递推过程写一下:,f1=1f2=1f3=f2+f1f4=f3+f2f5=f4+f3,可见,在已知f1和f2的时候,从第3个数据开始,每个数据都只与前面相邻的两个数据有关。,比如:当根据 f1+f2=f3 求出 f3 后,再求 f4 时,原来 f1 变量中的数据不再有用,所以如果把 f2 的值放到 f1 中,把 f3 的值放到 f2 中,那么计算
32、f4 的表达式 f3+f2 就变成了 f2+f1,结果又可以放到 f3 中,依此类推就形成了循环。,程序举例3_14:算法1,算法1:每循环一次求出一个新的数据,程序举例3_14:实现方案一,/*算法1:循环一次输出一个数据*/#include/3_15_1.cppvoid main()int f1=1,f2=1,f3;int n;printf(“%12d%12d”,f1,f2);for(n=3;n=40;n+)f3=f1+f2;printf(“%12d”,f3);if(n%5=0)printf(“n”);f1=f2;f2=f3;,每次循环求出一个新的数据并输出,使每行只输出5个数据,实现循环
33、递推算法的关键,程序举例3_14:算法2,算法2:每循环一次求出两个新的数据,一次循环:每循环一次求出两个新的数据,程序举例3_14:实现方案二,/*算法2:循环一次输出两个数据*/#include/3_15_2.cppvoid main()int f1=1,f2=1;int n;for(n=1;n=20;n+)printf(“%12d%12d”,f1,f2);if(n%2=0)printf(“n”);f1=f2+f1;f2=f1+f2;,循环变量的初值和终值不一样了,一次输出两个数据,每行输出4 个数据,技巧性比较强的循环递推算法的实现,程序举例3_15:题目及分析,例:求两个数的最小公倍数
34、。3_16.cpp,分析:假设有x,y,且xy,设最小公倍数为z,则(1)z一定会大于等于x(2)z=kx,k=1,2,3,(3)z一定会被y整除因此,只要循环令z=x,2x,3x,,试探其能否被y整除,如能则结束循环,所得的z即为所求设x=5,y=3,则执行如下操作(1)令z=x=5,5%3!=0,不能整除(2)令z=z+x=10,10%3!=0,不能整除(3)令z=z+x=15,15%3=0,能整除(4)因此z=15即为5和3的最小公倍数。,川大附小有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。A说:不是我。B说:是C。C说:是D。D说:他胡说。已知三个人说
35、的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事的人。,程序举例3_16:谁做的好事?,这时在内存中系统找到一个字节。让“=”的含义为“是”让“!=”的含义为“不是”,下面,我们把四个人说的四句话写成关系表达式。在声明变量时,让thisman表示要找的人,定义他是字符变量,char thisman;,Thisman地址xxxx,程序举例3_16:谁做的好事?,A说:不是我。写成关系表达式为(thisman!=A)B说:是C。写成关系表达式为(thisman=C)C说:是D。写成关系表达式为(thisman=D)D说:他胡说。写成关系表达式为(thisman!=D)在C语言中字符也是
36、有数值的,这个数值就是字符的ASCII码值,字符ABCDASCII码值65666768,程序举例3_16:谁做的好事?,1、如何找到该人,一定是“先假设该人是做好事者,然后到每句话中去测试看有几句是真话”。“有三句是真话就确定是该人,否则换下一人再试”。比如,先假定是A同学,让thisman=A;代入到四句话中,A说:thisman!=A;A!=A假,值为0。B说:thisman=C;A=C假,值为0。C说:thisman=D;A=D假,值为0。D说:thisman!=D;A!=D真,值为1。,显然,不是A做的好事(四个关系表达式值的和为1),程序举例3_16:谁做的好事?,思路:,再试B同学
37、,让thisman=B;代入到四句话中,A说:thisman!=A;B!=A真,值为1。B说:thisman=C;B=C假,值为0。C说:thisman=D;B=D假,值为0。D说:thisman!=D;B!=D真,值为1。,显然,不是B所为(四个关系表达式值的和为2),程序举例3_16:谁做的好事?,思路:,再试C同学,让thisman=C;代入到四句话中,A说:thisman!=A;C!=A真,值为1。B说:thisman=C;C=C假,值为1。C说:thisman=D;C=D假,值为0。D说:thisman!=D;C!=D真,值为1。,显然,是C所为(四个关系表达式值的和为3),程序举例
38、3_16:谁做的好事?,思路:,再试D同学,让thisman=D;代入到四句话中,A说:thisman!=A;D!=A真,值为1。B说:thisman=C;D=C假,值为0。C说:thisman=D;D=D假,值为1。D说:thisman!=D;D!=D真,值为0。,显然,不是D所为(四个关系表达式值的和为2)这时,我们可以理出头绪,要用所谓枚举法,一个人一个人地去试,四句话中有三句为真,该人即所求。,程序举例3_16:谁做的好事?,思路:,2、从编写程序的角度看,实现枚举最好用循环结构for(k=1;k=4;k=k+1)/循环体,开始thisman=64+k;/产生被试者,依次给thisma
39、n/赋值为A,B,C,Dsum=(thisman!=A)+/A的话是否为真(thisman=C)+/B的话是否为真(thisman=D)+/C的话是否为真(thisman!=D);/D的话是否为真/循环体,结束,程序举例3_16:谁做的好事?,NS图,有了上述了解之后,我们来看解“谁做的好事”的程序框图,根据上述框图写出的程序见3_17.cpp,#include void main()/主函数int k,sum,g=0;/声明变量为整数类型for(k=1;k=4;k=k+1)/循环从k为1到4,/k取1,2,3,4分别代表A,B,C,D/循环开始sum=0;/初始化,置0if(k!=1)sum
40、=sum+1;/A说的话,为真,则令sum加1;if(k=3)sum=sum+1;/B说的话,为真,则令sum加1;if(k=4)sum=sum+1;/C说的话,为真,则令sum加1;if(k!=4)sum=sum+1;/D说的话,为真,则令sum加1;if(sum=3)/若有三句话为真话,则做下列两件事 cout“做好事的人是”char(64+k)endl;/输出 g=1;/让有解标志置1if(g!=1)cout“未找到解!”endl;/如g不为1,则输出无解信息,讨论:下面这个程序行不行,从思路上讨论,上述程序可以简化为:3_18.cpp#include void main()int k,
41、g;/声明变量为整数类型for(k=1;k=4;k=k+1)/这里k既为循环控/制变量,也表示第k个人if(k!=1)+(k=3)+(k=4)+(k!=4)=3)/如果4句话有3句为真,则输出该人cout“做好事的人是”char(64+k)endl;g=1;if(g!=1)cout“未找到解!”endl;/输出无解信息,程序举例3_16:谁做的好事?,if 语句用于实现单路、两路和多路分支。switch也是多选一的分支语句,它是if 语句的一个补充(else if 结构),当用它编制程序时会增加可读性。循环是一组语句,计算机反复执行这组语句直到满足终止条件为止。while,do.while和f
42、or 三种循环语句可以相互转化。,小 结,for适用于循环次数已知的循环。while先判定循环条件,可能一次都不执行循环体。dowhile后判定循环条件,至少保证执行一次循环体。while和dowhile中都有改变循环控制变量的语句。可以通过循环变量来控制循环,在循环体中通过条件判定产生跳转的方法,终止循环。,小 结,P92 习题三3.1,3.6,3.7,3.104名专家对4款赛车进行评论A说:2号赛车是最好的。B说:4号赛车是最好的。C说:3号不是最佳赛车。D说:B说错了。事实上只有一款赛车最佳,且只有一名专家说对了,其他3人都说错了。请编程输出最佳车的车号,以及哪位专家说对了。,习 题,请提前预习第四章的内容,重点是:(1)数组的概念、定义和初始化(2)字符数组(3)结构与结构数组,预习提示,结束页,再见!,今天就讲到这里,