你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

总结第五章

2021/12/19 18:48:23

引例1

 

说明:

(1)若初始人口用n表示,增长率用rate表示,则计算某年的人口数量number的公式为:

                      number=n(1+rate )^year

(2)程序中的for循环控制语句中,年份year的初始值为1,终值为10,增量用year++实现。

 2

 

 

 说明:while语句是3种循环结构之一,while后括号中的表达式称为循环条件,循环开始时,一定要保证循环条件为真。需要重复执行的语句组成了循环体,本例中循环体部分是要重复计算item的值,然后将其值与要求的精度进行比较,决定是否结束循环.

5.2 使用for语句实现循环结构

5.2.1 for语句的基本语法

for语句的一般形式:

for(表达式1;表达式2;表达式3)

          循环体语句;

for语句的执行过程如下:

(1)首先计算表达式1。

(2)判断表达式2,若其值为真(非0),则执行循环体语句,然后执行第(3)步;若值为假(0),结束循环,转到第(5)步执行。

(3)计算表达式3。

(4)返回第(2)步继续执行。

(5)循环结束,继续执行for语句的下一条语句。

大部分情况下,循环体语句为一复合语句。

注意,表达式1只是在进入循环之前计算一次。表达式2,循环体语句和表达式3将重复执行。

1.可以应用于计数型的循环

格式:                循环体语句;

说明:循环变量赋初值是一个赋值语句,用于给循环变量赋初值;循环条件是一个关系表达式,决定何时终止循环(即确定循环的终值);循环变量增量决定循环变量在完成一次循环后如何变化。三部分之间以“;”隔开。

 

 4

 ​​​​​​​

 

 

2.for语句的一般形式中省略表达式1

格式:                         for(;表达式2;表达式3)式1时,可以将循环变量赋初值放在for之前,注意,此时不能省略第一个“;”。

说明:省略表达

 

3.for语句的一般形式中省略表达式2

格式:         for(表达式1;表达式3)

                            循环体语句;

说明:省略表达式2时,表示不对循环控制,这时如果没有其他处理的话,会形成死循环。应避免这样使用for结构。

4.for语句的一般形式中省略表达式3

格式:        for(表达式1;表达式2;)

                         循环体语句;

说明:省略表达式3时,可以在循环体语句中加入修改循环变量的值的语句。

 5.for语句的一般形式中表达式1和表达式3也可以是逗号表达式

 

6.for语句的一般形式中表达式2的值只要非0,就执行循环体

 等价于

循环体语句sum=sum+i;放到表达式3中,与i++构成一个逗号表达式,此时循环体语句实际为一个空语句“;”(单独一个“;”称为空语句)。

5.5

 

 ​​​​​​​

 

 

 5.6

 

 ​​​​​​​​​​

 

 5.7

 ​​​​​​​

 

5.8

 

 5.9

 

 

说明:(1)在for循环中,每次读入一个字符,根据字符的类型,选择不同的分支执行相应的运算。循环共执行了10次,读入了10个字符,相应的计数变量进行了计数。

(2)程序中使用字符输入函数getchar()读入字符,使用多分支if结构实现分支,用逻辑表达式判断字符的种类。

5.10

 

 

说明:(1)for语句中表达式2“(ch=getchar())!='\n'”是一个关系表达式,运算符!=的左侧是赋值表达式。运算时,先计算赋值表达式ch=getchar(),把输入的字符赋给变量ch,同时该表达式的值就是变量ch的值;然后再和'\n'比较。用表达式实现了输入和比较两种运算。

(2)表达式“(ch=getchar())!='\n'”和“ch=getchar()!'\n'”不等价。因为赋值运算符=的优先级低于关系运算符!=,所以不能省略(ch=getchar())!='\n'中的括号。
5.11

 

说明:(1)程序中使用的是在for循环语句中读入字符,所以键盘输入3位数字字符时,应连续输入,数字字符之间不能出现空格。如果输入空格或回车符,由于%c表示要读入一个字符,而空格或回车键本身也是一个字符,因此会被作为输入字符。

(2)表达式“n=n*10+ch-'0'”是将输入的数字字符组合成一个整型数。例如,若输入的数字字符是'7',其ASCII码是55,而字符'0'的ASCII码是48,二者相减即为数字7。这是一种将数字字符转换为数字的常用方法。
5.12

 

 

说明:

上述算法中,若number较大,且为素数时,for循环重复的次数会很多。这时可以进行优化:使i从2~sqrt(number),即只需i<=sqrt(number),减少for循环重复的次数。

5.3

while语句一般形式:

    while(表达式)

          循环体;

第一步:计算表达式的值,若表达式的值为“真”,则执行第二步;若表达式的值为“假”,则转到第四步。

第二步:执行循环体语句。

第三步:返回第一步。

第四步:结束循环,执行while语句的下一条语句。

注意:while语句的特点是先判断循环条件,后执行循环体
5.13

 

 

5.14

 

 

 

 5.15

 

说明:(1)程序中while语句的条件: 

 不能写成

 

两者不等价。

(2)循环体为一条完整的if语句,若有多条语句时,必须使用复合语句的形式。

使用while语句时,应注意以下几点:

while后面的括号“()”不可省略。
语句中的表达式可以是任意类型的表达式,若表达式的值为非0,则表示循环条件为“真”,执行循环语句;若表达式的值为0,则表示循环条件为“假”,不执行循环体语句,结束循环,执行循环结构的下一条语句。如果表达式的值一开始就为“假”(0),则循环体一次也不执行,直接执行循环体后面的语句。
循环体语句可以是复合语句,即当循环体由多条语句构成时,必须用一对大括号将这些语句括起来,形成复合语句。
为使循环能正常结束,循环体中应对表达式进行修正,使表达式的值趋近于“假”,避免出现死循环。
5.4

一般形式:do

                     循环体;

                  while(表达式);

 第一步:执行循环体语句。

第二步:计算表达式的值,若表达式的值为“真”(非0),返回第一步;若表达式的值为“假”(0),则执行第三步。

第三步:结束循环,执行do-while语句的下一条语句。

注意,do-while语句的特点是先执行循环体,后判断循环条件。因此,do-while循环至少要执行一次循环体。
5.16

 

 

使用do-while语句时,应注意以下几点:

  • 在do之后不能有语句结束符“;”,因为该语句还没有结束。
  • 在while(表达式)之后必须有语句结束符“;”,表示do-while语句到此结束。
  • 在循环体中必须有改变循环条件的语句,否则会出现死循环。

 

5.18

 

 

5.5 改变循环结构的跳转语句

5.5.1 break语句

一般形式:          break;

当break语句用在循环语句中时,可使程序终止循环而转去执行循环语句的后继语句。通常break语句总是与if语句一起配合使用,即满足条件时便跳出循环。

 

 

5.20

 

 

 

说明:

(1)程序中结束for循环的条件有两个:一是i>m;二是break语句。

(2)若i>m,说明for循环正常结束,则n一定是素数。

(3)若遇到break语句,说明循环中条件n%i==0成立,n能被某个i整除,执行break语句退出循环,此时i<=m,n一定不是素数。
5.21

 

 

5.5.2 continue语句

continue语句的作用是跳过循环体中continue后面的语句,继续下一次循环。continue语句只能用在循环语句中,常与if语句一起使用。

一般形式             continue;

 

 

说明:(1)“if(i%7!=0)continue;”语句的功能是:如果n不能被7整除,则结束本次循环,转而执行“i++;”,继续下一次循环。

(2)本例主要是continue语句的使用示例,也可以不使用continue语句。

注意continue语句break语句有着本质的区别:continue语句只是结束本次循环,并不终止整个循环的执行;而break语句的作用是强制终止整个循环程序。
5.23

5.5.3 goto语句

goto语句的一般形式:

goto 语句标号;

说明:语句标号是一个有效的标识符,使用时在语句标号的后面跟一个“:”出现在函数中某语句的前面。出现执行到goto语句时,会控制跳转到该语句标号处,达到控制循环的目的。

 

 

 

5.6 循环嵌套

当一个循环的循环体内又包含了另一个完整的循环结构时,称为循环的嵌套或者是二重循环。根据问题的需要,可以构成三重及以上的循环嵌套结构,但一般情况下最多使用到三重循环。

 

 

 

使用循环嵌套时,注意以下几点:

(1)外循环执行一次,内循环要执行一轮。即外循环执行一次,内循环一直要执行到条件不满足时为一轮;再执行外循环一次,内循环又一直执行到条件不满足时为第二轮;如此重复执行,直到外循环不满足时,整个循环嵌套结束。

(2)循环嵌套格式中的内外循环体不允许出现交叉,即外循环要完全包含内循环。

(3)循环嵌套时,内循环体中使用break和continue语句时,只影响包含它们的内循环,与外循环无关。

 

 5.26

 

 5.27

 5.28

 

 5.29

 

 5.30

 

5.31

 

 

 5.32

 

 5.33

 

 5.34

 

 5.35

 

 5.36

 

 5.37