do-while循环与while循环

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高职学院 计算机专业 《程序设计基础》
回顾
Байду номын сангаас
选择结构的关键在于正确描述条件,考虑不同条件下 应做的动作。
关系运算符,逻辑运算符
掌握if语句三种基本结构的语法,场景,注意事项
嵌套if结构是在主if块中还包含另一个if 语句
C语言规定,嵌套if结构中每个else部分总是属于前面 最近的那个缺少对应的else部分的if语句
例如,很多计算机初学者都曾使用过的打字小程序,用户 每次完成一个单词的输入,系统就会检查,并根据拼写正 确与否进行计数,这一过程会一直重复,直到用户完成了 所有当前给定的单词输入为止。
这种在一定条件下重复执行一些动作的程序,就可通过本 章介绍的循环结构实现。
3
高职学院 计算机专业 《程序设计基础》
通过对下面三个问题自问自答的方式,可以帮助编程者确定解决问题 的方法中是否需要引入循环。
解决问题过程中,是否有一些步骤是重复的?如果有,是哪些?
如果第一个答案是肯定的,那么进一步询问自己是否能够明确这 些步骤被重复了多少次?
如果第二个答案是否定的,那么这些步骤是无限重复,还是在一 定的条件下停止?如果会停止,那么停止条件是什么?
7
高职学院 计算机专业 《程序设计基础》
常见循环结构介绍(一)
依上所述,根据重复操作的次 数是否已知可以将循环大体划 分两大类:重复次数固定的循 环和重复次数不固定的循环。
对于重复次数固定的循环,可 通过设置一个计数器来记录重 复执行的次数,并在重复次数 达到设定值后结束循环,适合 采用for循环语句进行编写。示 例如下:
循环体:当循环条件成立时重复执行的操作。
当发现解决问题的算法中存在大量的重复类似语句,需要 引入循环结构时,只要准确把握上述的要素,就能够正确 的写出相关语句了。下面,结合前面提到的铁路售票和猜 数两个问题对构成循环的要素进行分析。
14
高职学院 计算机专业 《程序设计基础》
循环构成要素分析示例
13
高职学院 计算机专业 《程序设计基础》
构成循环结构的要素
我们通常将循环条件、循环变量和循环体称为构成循环的 三个要素。
循环条件:也称循环控制条件,指循环得以继续或终 止的条件,通常用逻辑表达式或关系表达式表示。
循环变量:也称循环控制变量,通常出现在循环条件 表达式中,该变量的值影响循环条件表达式的取值, 进而影响循环的执行情况。执行循环条件判断前必须 对循环变量进行初始化,循环执行过程中根据需要修 改循环变量的值。
循环条件通常表现为一个表达式(关系表达式或逻辑表达 式),根据表达式的取值来控制循环的执行。每执行一次 循环,条件表达式的取值都可能发生变化,从而影响循环 的执行。影响循环条件表达式取值的变量,通常称为循环 变量。循环开始前,循环变量根据其代表的含义要有一定 的初始值,并产生循环条件的初始状态。
其中,控制重复操作的条件判断可能出现在整 个重复操作的开头,也可能出现在中部或结尾
售票开始
当控制条件的判断出现在整个重复操作的开头 时,意味着我们每次都是先判断控制条件是否 成立,如果成立,就去执行一次后面的重复部 分,如果不成立,则退出循环。有些教材上也 将这种先进行控制条件的判断的循环结构称之 为当型循环,可翻译为“当控制条件成立时重 复执行”,适合采用while循环语句来实现。
例1、应用中我们经常会使用一行“-”或“*”,作为项目间的分割线 或者对输出进行布局,程序是如何编写这样的输出呢?
方案(一):通过一条printf语句一次性输出指定数量的字符 方案(二):连续写n条printf语句,每个printf语句输出一个字符。 例子2、数学中常见的累加问题,计算从终端键盘输入的所有整数的 立方和,输入整数的数量不确定,以-1作为输入结束标识。 分析:计算一个数的立方可以使用数学函数库中的pow函数实现。解 决此题,需要针对每个输入数据进行判断,如果输入数据不是-1,则 调用pow函数来分别计算当前数据的立方,并将其累加到和数上。部 分程序代码可编写如下:
提示终端猜数 猜数次数加1
猜中?

否 提示大了还是小了
游戏结束
图5-5 猜数游戏流程图(二)
12
高职学院 计算机专业 《程序设计基础》
循环结构的构成要素
从发现重复类似的操作到采用循环结构实现,需要考虑和 解决很多具体问题。首先是确定哪些是要重复处理的动作, 这是实现循环的基础;再有就是循环的控制条件,需要确 定循环操作在何种条件下开始,以及在何种条件下停止。 控制循环执行的条件通常称为循环控制条件,简称循环条 件。当条件成立时重复执行的操作称为循环体。

猜中?
是 游戏结束 图5-4 猜数游戏流程图(一)
11
高职学院 计算机专业 《程序设计基础》
常见循环结构介绍(五)
也有些特殊情况,依据问题的流程, 控制条件的判断出现在整个重复操 作的中间。例如,我们对前面猜数 游戏稍加调整,要求在未猜中的情 况下对用户进行提示,告知用户当 前猜测的数据与目标数相比较是大 了还是小了,以便于用户后续猜数 操作。上述程序流程可修改如下:
循环变量:ticket_count。循环条件表达式“ticket_count > 0”中只有 一个变量ticket_count ,其取值直接影响条件表达式的取值。 ticket_count 代表的是当前剩余的票数,初始状态时,ticket_count = 火车的总共可售座位数 = N。
循环体:包括两个操作,售票给旅客和剩余票的数量减去1。每售出 一张车票后,需要同步修改剩余票数的值,即对存储剩余票数的变量 ticket_count进行减1操作(修改循环变量),这样能够保证在售出N 张票后,ticket_count 的值变为0,循环会因表达式“ticket_count > 0”不成立,而退出,从而结束循环
第一个问题的答案指出了解决方案中是否需要引入重复控制,以及哪 些步骤是重复执行的。后两个问题则是帮助我们根据重复的特点选择 合适的循环结构进行描述。C语言里提供了多种用于描述重复操作的 循环结构语句,例如,重复次数已知的情况、在一定条件下重复执行 的情况、无限次重复执行等。找到了上述三个问题的答案,程序里的 循环结构也就随之确定了。
本章目标
掌握循环结构的使用时机 掌握循环的三种结构 牢记构成循环的要素 掌握使用continue和break提前结束循环的用法 掌握嵌套循环 理解三种循环结构各自的特点和适用情况
4
高职学院 计算机专业 《程序设计基础》
循环结构的使用时机
在实际应用中,经常需要对不同的数据进行具有规律性的 重复操作(如累加求和),如果仅采用顺序结构和选择结 构进行描述,有多少组数据需要处理,就必须重复编写多 少组相同的计算代码,程序会变得臃肿不堪。循环结构是 在一定条件下反复执行某段程序的流程结构。循环结构的 引入可以简化类似操作的描述,通过重复执行一段相同的 程序代码,处理多组不同数据。
int cub=0, num, sum=0;
scanf(“%d”, &num);
if (num != -1)
{
cub = pow(num, 3);
sum += cub;
}
6
高职学院 计算机专业 《程序设计基础》
循环结构的使用时机
上面两个程序很明显无法令人满意,里面有太多重复的类似的语句, 尤其是当重复次数大到一定程度时,其程序书写的繁琐已经使得其失 去了计算机辅助计算的优越性。通过观察可以发现,这两个程序共同 的特点就是有很多重复类似的操作语句,如果能够将其合并或者简化 将会使程序变得更为简洁,也更有效率。
【示例】猜数游戏。系统自动产生一个 1-100的随机数,用户通过终端输入设 备进行猜数,猜测的次数没有限制,直 到猜中为止。
分析:系统产生随机数后,用户至少需 要猜测1次,才知道是否猜中,即用户 需要不断重复“猜数”这一动作,直到 猜中为止。程序流程图描述如下:
产生随机数[1,100]
提示终端猜数 猜数次数加1
告知旅客车票已售完
而言是有条件重复的,当“车票有剩余”这一 条件成立时,售票这一动作才能被执行。程序
售票结束
流程可用流程图描述如下:
图5-3 售票系统流程图
10
高职学院 计算机专业 《程序设计基础》
常见循环结构介绍(四)
当控制条件的判断出现在重复操作的结 尾时,意味着我们要先执行一次重复部 分,才进行控制条件检查,如果条件成 立,则继续重复前面的操作,如果不成 立,则退出循环。有些教材上也将这种 先执行重复部分,后进行控制条件的判 断的循环结构称之为“直到型循环”, 可翻译为“重复执行直到控制条件不成 立为止”,适合采用do – while循环语 句来实现。 示例如下:
控制条件的判断出现在重复操作中 间的情况也称之为中途退出问题, 可以整体上将其看做是一个无限循 环,然后在循环内部增加有条件的 退出,一般可采用while循环语句进 行描述。半途退出问题还可以通过 适当的调整,转化为控制条件的判 断出现在重复操作开始的情况,进 而采用前面提出的方法进行解决。
产生随机数[1,100]
switch结构适用于条件表达式为单值的多分支选择。 条件表达式或变量结果必须是整型或字符型
条件运算符是 if–else 语句的另一种表现形式
1
高职学院 计算机专业 《程序设计基础》
第五章
循环结构
高职学院 计算机专业 《程序设计基础》
导入
我们已经讨论了程序设计三种基本结构中的两种,顺序结 构和选择结构,其中顺序结构比较简单,按照语句书写的 顺序自上而下,依次执行;选择结构则是根据条件判断的 结果,有选择的执行不同语句块。这两种结构相对都比较 容易掌握,能够用于编写简单、没有大量重复操作的程序。 然而,在日常我们接触的大多数软件中,都会多次重复执 行某些过程。
图5-1 计算累加和流程图
8
高职学院 计算机专业 《程序设计基础》
常见循环结构介绍(二)
对于重复次数不固定的情况, 又可以细分为在一定条件下重 复执行的有限循环和无条件重 复的无限循环。前者是指重复 操作是在一定条件下进行的, 当这一条件被破坏时会跳出循 环,转而执行程序的其他部分。 无限循环又称死循环,主要使 用在一些特定场合,如某些需 要24小时*7不间断运行的程序 等情况。任何一种循环描述语 句都可以用于实现无限循环。 无限循环示例如下:
问题1:铁路售票系统。假设当前针对一列直达某地总共有N个可售座 位的火车进行售票。
分析:根据描述和流程图,可以找出构成循环结构的要素如下:
循环条件:“是否有票?”。如果用int型变量ticket_count 表示当前 剩余票数,可通过条件表达式“ticket_count > 0”表示循环条件,当 表达式为真时,表示有票;否则,票已售完。
系统启动
接收用户指令 完成用户指定操作
【示例】ATM取款机程序。
分析:ATM取款机是一个24小 时*7的系统,对外提供全天候 的服务,其对应的后台程序流 程可用流程图描述如下:
等待下一用户 图5-2 ATM取款机程序流程图
9
高职学院 计算机专业 《程序设计基础》
常见循环结构介绍(三)
对于在一定条件下重复执行的有限循环,我们 通过指定的条件来控制重复操作的执行次数。
【示例】铁路售票系统。针对某一时刻出发到 达某地的火车进行售票。
有票?

真 售票给旅客
剩余票数减1
分析:售票员一直坐在售票窗口处等待,每当 有旅客要求买票时,售票员均需先确认该次火
等待下一用户
车是否还有用户需要的车票剩余。如果有剩余,
收取票款,并出票;否则,告知客户,结束该
次列车的售票工作。售票这一过程对于售票员
【示例】编写程序,用于计算 100个输入数据的累加和。
分析:要解决上述问题,需要 连续重复执行100次输入数据 和累加这两个操作,属于重复 次数固定的循环结构,可用流 程图描述如下:
计数器清零,和数清零,限定值为100;
达到

限定值?

输入一个数据
将输入的数据累加到和数
计数器加1
结束循环 输出累加和
要想写好循环,首先要能够从问题的描述和解题步骤中去 发现是否需要使用循环结构进行描述。在分析问题时,要 注意识别出解决步骤中重复执行的类似动作,这是重要的 线索,说明可能需要引入循环结构,统一处理这些重复的 动作,尤其是重复次数不确定或者过多的情况。
5
高职学院 计算机专业 《程序设计基础》
循环结构的使用时机
相关文档
最新文档