第06章 循环结构程序设计

  • 格式:doc
  • 大小:88.50 KB
  • 文档页数:19

本章重点:● while语句
● do-while语句
● for语句
● break和continue语句
第六章循环结构程序设计
§6.1 while语句
一、格式
二、举例
最简单的例子(输出5行星号,输出1~10十个数或它们的平方)
需分析的例子(累加,累乘,类除,同时累加累乘)
稍复杂的例子(循环嵌套,如:输出小于100的所有质数,求两个
数的最大公倍数或最小公约数等)
复杂算法例子(涉及到数组等的例子,如杨辉三角等)
1. 求s=1 + 2 + 3 + … + 100的程序
2. 读下面的程序,说出结果
3. 思考下面的程序会怎么样?
2
C 语言程序设计
第6章 第3页
三、说明
1. 循环体一定要括起来,否则只为第一句。

2. 循环体中应有使循环趋于结束的语句,否则可能是死循环
§6.2 do-while 语句
一、
格式
二、举例
例. 求s=1 * 2 * 3 * … * 10的程序
三、说明
1. while(表达式)的后面有“;”
2. 一般使用while和for循环较多,do-while循环很少使用
§6.3 for语句
一、格式
表达式1:一般为赋值表达式,给循环变量赋初值;
表达式2:一般为关系表达式或逻辑表达式,循环条件;
表达式3:一般为赋值表达式,给循环变量增量或减量。

上述格式通常又可以写为以下格式
执行过程:首先计算表达式1,然后计算表达式2,若表达式2为真,
则执行循环体;否则,退出f o r循环,执行f o r循环后的语句。


果执行了循环体,则循环体每执行一次,都计算表达式3,然后重新
计算表达式2,依此循环,直至表达式2的值为假,退出循环。

二、举例
1. 求s=1! + 2! + 3! + … + 10!的程序
4
C语言程序设计
2. 从键盘输入一个整数,判断它是否为质数。

三、说明
1. “变量赋初值”、“循环控制条件”和“循环变量增值”部分均可缺省,
甚至全部缺省,但其间的分号不能省略。

2. “循环变量赋初值”表达式,既可以是给循环变量赋初值的赋值表
达式,也可以是与此无关的其它表达式(如逗号表达式)。

第6章第5页
3. “循环继续条件”部分是一个逻辑量,除一般的关系(或逻辑)表
达式外,也允许是数值(或字符)表达式。

6
C语言程序设计
§6.4 break和continue语句
有时,我们需要在循环体中提前跳出循环,或者在满足某种条件下,不执行循环中剩下的语句而立即从头开始新的一轮循环,这时就要用到
break和continue语句。

一、break语句
在前面学习switch语句时,我们已经接触到break语句,在case 子句执行完后,通过break语句使控制立即跳出switch结构。

在循
环语句中, break语句的作用是在循环体中测试到应立即结束循环
时,使控制立即跳出循环结构,转而执行循环语句后的语句。

当break处于嵌套结构中时,它将只跳出最内层结构,而对外层结构无影响。

第6章第7页
二、continue语句
continue语句只能用于循环结构中,一旦执行了continue语句,程序就跳过循环体中位于该语句后的所有语句,提前结束本次循环周期并开始新一轮循环。

同break一样, continue语句也仅仅影响该语句本身所处的循环层,而对外层循环没有影响。

三、说明
1. break能用于循环语句和switch语句中,continue只能用于
循环语句中。

2.循环嵌套时,break和continue只影响包含它们的最内层循
环,与外层循环无关。

8
C语言程序设计
§6.5 程序举例
[例1] 从键盘输入一个数,判断其是否为素数
第6章第9页
10
C语言程序设计
[例2] 输出100-200之间的所有素数
[例3] 求100-999之间的水仙花数如:153=1^3+5^3+3^3
[例4] π/4 = 1-1/3+1/5-1/7+... 求π。

[例5] 求S=1+(1+2)/2!+(1+2+3)/3!+ … +(1+2+…+10)/10!
C 语言程序设计
[例6] 其中a 和n 由键盘输入。

[例7] 从键盘输入两个整数,求其最大公约数和最小公倍数
求S n 的值
n 个a
[例8] 把一个数分解成质因数乘积的形式
C语言程序设计
[例9] 哥德巴赫猜想问题(把一个偶数分解成两个素数之和)
[例10] 用二分法求方程3x 3 - 4x 2 + 3x – 6 = 0在1.5附近的根
X
C语言程序设计
分析:方程在1~2之间有一个根,在-2~-3之间也有有一个根,现在求1~2之间的根,可用二分法求之。

[例11] 百钱买百鸡问题,(100元买100只鸡,其中公鸡每只3元,母鸡每只1元,小鸡三只一元,试问买得公鸡、母鸡和小鸡各多少只
分析:设应买公鸡X只,母鸡Y只,小鸡Z只,则:
X + Y + Z = 100
3 * X + Y + Z / 3 = 100
本题用到了穷举法,穷举法是穷举所有可能情形,并从中找出符合要求的解的一种方法。

穷举法还用在软件测试、密码破解等多个方面。

穷举法实际上利用了计算机运算速度快、“不怕疲倦”的优点。

[例12] 爱因斯坦的阶梯问题。

设有一阶梯,每步跨2阶,最后余1阶;每步跨3阶,最后余3
阶;每步跨4阶,最后余3阶;每步跨5阶,最后余4阶;每步
跨6阶,最后余5阶;每步跨7阶时,正好到阶梯顶。

问共有多
少阶梯?
思考:设阶梯数为X则:
X % 2 = 1
X % 3 = 2
X % 4 = 3
X % 5 = 4
X % 6 = 5
X % 7 = 0
C 语言程序设计
作业题
1 输出1~1000之内所有的完数。

2 一球从100m 高度自由落下,每次落地后反弹回原高度的一半,在落下。

问第10次落地时,共经过多少米?第10次反弹多高?
3 求数列 前20项的和。

4 用牛顿迭代法求方程2x 3 - 4x 2
+ 3x – 6 = 0 在1.5附近的根。

5 搬砖问题:36块砖,36人般;男搬4,女搬3,两个小孩抬一砖。

要求一次
全搬完,问男、女、小孩个若干?
...132181358352312++++++。