第五章循环结构程序设计

循环结构是结构化程序设计中的基本结构之一。
C语言提供了for语句、while语句和do- while语句三种循环语句。
5.1引例
例5.1
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.2
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

说明:while语句是三种循环结构之一,while后括号中的表达式称为循环条件,循环开始时,一定要保证循环条件为真。需要重复执行的语句精神了循环体。
5.2使用或一句循环实现循环结构
for语句是C语言提供的功能强大、使用广泛的一种循环结构,不仅可以解决循环次数未知的循环问题,特别适合解决循环次数已知的循环问题。
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将重复执行。
根据for语句格式的特点,其实际应用可以有多种形式。
1.可以应用于计数型的循环
格式如下:
for(循环变量赋初值;循环条件;循环变量增量)
循环体语句
说明:循环变量赋值是一个赋值语句,用于给循环变量赋初值;循环条件是一个条件表达式,决定何时终止循环(即确定循环的终值);循环变量增量决定循环变量在完成一次循环后如何变化。三部分之间以“;”隔开。
例5.3
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.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,就执行循环体
7.for语句的一般形式中循环体句可以省略
5.2.2for循环使用示例
例5.5
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.6
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.7
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.8
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.9
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.10
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.11
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.12
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

5.3使用while语句实现循环结构
在C语言中,使用while语句完成不定次数的循环。如果满足循环条件,则反复执行循环体语句,当循环条件不满足时退出循环。
5.3.1while语句的基本语法
while语句在使用时,总是先要判断一个条件,所以可以用while语句实现“当型”循环。while语句的一般形式如下:
while(表达式)
循环体;
执行流程图:
第1步:计算表达式的值,若表达式的值为“真”,则执行第2步;若表达式的值为“假”,则转到第4部。
第2步:执行循环体语句。
第3步:返回第1步。
第4步:结束循环,执行while语句的下一条语句。
注意:while语句的特点是先判断循环条件,后执行循环体。
5.3.2while循环使用示例
例5.13
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.14
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.15
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

5.4使用do-while语句实现循环结构
在C语言中,do-while语句也用于完成不定次数的循环控制。do-while语句不同的是,do-while语句首先执行一次循环体,然后判断循环条件,如果满足,则反复执行循环体语句;否则结束循环。
5.4.1do-while语句的基本语法
do-while语句在使用时,首先执行循环体语句,然后再判断条件。所以说可以用do-while语句实现“直到型”循环。do-while语句的一般形式如下:
do
循环体
while(表达式);
do-while执行流程如下:
第1步:执行循环体语句。
第2部:计算表达式的值,若表达式的值为“真”(非0),返回第1步;若表达式的值为“假”(0),则执行第3步。
第3步:结束循环,执行do-while语句的下一一条语句。
注意,do-while语句的特点是先执行循环体,后判断循环条件。因此,do-while循环至少要执行一次循环体。
5.4.2do-while循环使用示例
例5.16
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

在使用都do-while语句使用注意以下几点:
1.在do之后不能有语句结束符“;”因为该语句还没有结束。
2.在while(表达式)之后必须有语句结束符“;”表示do-while语句到此结束。
3.在循环体中必须有改变循环条件的语句,否则会出现死循环。
例5.17
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.18
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

5.5 改变循环结构的跳转语句
在前面介绍的三种循环语句,即for循环语句、while循环语句及do-while循环语句中,控制循环是通过循环达到设定的次数或者循环的判断条件为“假”时结束循环,这种循环控制方式在实际的程序设计中是不够的。许多时候当循环结构中出现多个循环条件时,要求当某个条件满足时会立即结束循环,或者循环结构中根据条件会跳过某些语句继续循环,这就要在循环结构中配合使用break语句和continue语句
5.5.1 break语句
break语句在循环语句和switch语句中。
break语句的一般形式如下:
当break语句用于循环语句时,可使程序终止循环而转去执行循环语句的后继语句。通常break语句总是与if语句一起配合使用,即满足条件时便跳出循环。
例5.19
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.20
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.21
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

5.5.2 continue语句
continue语句的作用是跳过循环体中continue后面的语句,继续下一次循环。continue语句只能用在循环语句中,常与if语句一起使用。
continue语句的一般形式如下:
continue
例5.22
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.23
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

5.5.3 goto语句
goto语句的一般形式如下:
goto语句标号;
说明:语句标号是一个有效的标识符,使用时在语句编号的后面跟一个“:”出现在函数中的某语句的前面。程序执行到goto语句时,会控制跳转到该语句标号处,达到控制循环的目的。
例5.24
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

注意,语句标号必须与goto语句处于同一函数中。通常goto语句与if语句连用实现循环控制。大型循环中由于goto语句可能存在的不合理的使用,会使循环结构变坏,所以程序设计中,不建议使用goto语句。
5.6 循环嵌套
当一个循环的循环体内有包含了另一个完整的循环结构时,称为循环的嵌套或者是二重循环。根据问题的需要可以构成三重及以上的循环嵌套结构,但一般情况下最多使用到三重循环。
使用for语句、while语句及do-while语句相互嵌套,构成的嵌套结构有以下几种。
(1)for语句中嵌套for语句
for() }
{ … }
for() } }
} 内循环 }外循环
{…} } }
} }
(2)for语句中嵌套while语句
for() }
{ … }
while() } }
}内循环 }外循环
{…} } }
} }
(3)while语句中嵌套while语句
while() }
{ … }
while() } }
{…} }内循环 }外循环
… } }
} }
( 4)do-while语句嵌套for语句
do }
{ … }
for() } }
{…} }内循环 }外循环
… } }
}while() }
(5)do-while语句中嵌套do-while语句
do }
{ … }
do } }
{ … }内循环 }外循环
}while(); } }
… } }
}while(); }
(6)while语句中嵌套do-while语句
while() }
{ … }
do } }
{ … }内循环 }外循环
}while(); } }
… } }
} }
使用循环嵌套时,注意以下几点:
1)外循环执行一次,内循环要执行一轮。即外循环执行一次,内循环一直要执行的条件不满足是为一轮;再执行外循环一次,内循环又一直执行到条件不满足时为第二轮;如此重复执行,直到外循环条件不满足时,整个循环嵌套结束。
2)循环嵌套格式中的内外循环体不允许出现交叉,即外循环要完全包含内循环。
3)循环嵌套时,内循环体中使用break语句和continue语句时,只影响包含它们的内循环,与外循环无关
例5.25
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.26
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.27
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.28
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

5.7 典型算法举例
例5.29
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

递推法的解题思路是:后项可由前项推出(称为正推),或前项可由后项推出(称为倒退)。找出前后项的关系以后,需要应用循环结构实现算法,其中确定前后相的关系是关键。
例5.30
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

5.7.2 迭代法
牛顿迭代法又称为牛顿切线法
例5.31
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

5.7.3 穷举法
例5.32
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

穷举法的解题思路是:在一个集合内对每个元素一一测试。集合即为集合即为取值范围,首先要确定问题的取值范围,然后对所有值逐个进行判断,用人工来做这项工作既单调而又繁琐,但对计算机来说,可以用它高速的运算来处理重复的工作。
例5.33
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

5.8循环程序设计示例
例5.34
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.35
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.36
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

例5.37
流程图
在这里插入图片描述

代码运行结果
在这里插入图片描述

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值