第7章 循环控制
生活中总会有许多简单而重复的工作,为完成这些重复性工作,需要花费很多时间。使用循环语句来处理程序开发中简单、重复性的工作是最好不过的了。
本章致力于使读者了解while、do…while和for3种循环结构的特点,以及转移语句的相关内容。
本章的知识架构及重难点如下:
7.1 循环语句
程序在运行时可以通过判断、检验条件做出选择,帮我们解决许多问题。此处,程序还必须能够重复,也就是能反复执行一段指令,直到满足某个条件为止。例如,要计算一个公司的月消费额,就要将所有的消费金额依次相加。如果要计算全年的消费总额,还需要将1~12月的消费金额依次相加。这种重复的过程就称为循环。C语言中有3种循环语句,即while、do…while和for循环语句。循环结构是结构化程序设计的基本结构之一,因此熟练掌握循环结构是程序设计的基本要求。
7.2 while语句
使用while语句可以解决当某个条件满足时反复执行某个循环体的问题。其一般形式如下:
while(表达式)
{
语句块(循环体)
}
while语句的执行流程图如图7.1所示。
while语句首先检验一个条件,也就是括号中的表达式。当条件为真时,就执行紧跟其后的循环体语句或者语句块。每执行一遍循环,程序都将回到while语句处,重新检验条件是否满足。如果一开始条件就不满足,则跳过循环体中的语句,直接执行后面的程序代码。如果第一次检验时条件满足,那么在第一次或其后的循环过程中,必须得有使条件为假的操作,否则循环将无法终止。
说明:
无法终止的循环常被称为死循环或者无限循环。
例如下面的代码:
while(iSum<100)
{
iSum+=1;
}
printf("iSum为:%d",iSum);
在这段代码中,while语句首先判断iSum变量是否小于常量100,如果小于100,为真,那么执行紧跟其后的循环语句块;如果不小于100,为假,那么跳过循环语句块中的内容直接执行printf语句。在循环语句块中,可以看到对其中的变量进行加1的运算,这里的加1运算就是循环结构中使条件为假的操作,也就是使得iSum不小于100,否则程序会一直循环下去。
误区警示:
学习时很容易在while语句后添加英文分号(;),从而导致编译报错。一定要注意,if、if...else、while语句的判断表达式后是没有分号的。
【例7.1】计算n~100的累加和(while版) 用户输入一个值,从这个值开始,依次与之后的连续若干个自然数相加,当该自然数大于100时结束,并输出这若干个自然数的和。这里用到while循环,代码如下: