第5章 循环结构及其应用
学习目标: 掌握循环结构的应用场合,循环结构的设计,循环语句的用法,设计循环结构程序。
学习内容: while循环,do-while循环,for循环,break语句,循环嵌套,循环结构程序设计方法。
5.1 一个循环结构程序实例。
要在计算机屏幕上输出30个“*”,可以使用输出函数printf()一次完成,但是程序中要重复输入30次“*”。其实同样的操作可以换一个思路完成,那就是让计算机重复30次输出一个“*”的工作,而输出一个“*”的工作很容易用printf()语句来实现。 【例5-1】输出30个“*”。 【编程思路】
(1)定义变量i,并赋初值为1,用i来进行计数器。 (2)使用循环结构重复执行输出一个“*”的过程。
(3)每次输出一个“*”,让计数器加1,当计数器超过30就停止重复工作。 【程序代码】 #include
int i=1; while(i<=30)
}
{ }
printf(\printf(\i++;
提示:本例中如果去掉语句i++;,就会出现死循环。
5.2 实现循环结构的语句
C语言提供了三种实现循环结构的语句:while语句、do-while语句和for语句。虽然3个语句的语法规则不同,但在使用上很相似,一般情况下可以相互转换。当然它们有各自的特点,在实际应用中还是要根据具体情况选择恰当的循环语句。
5.2.1 while语句
while语句用于当型循环结构,其一般形式为: while(表达式) {
循环体语句 }
while语句的执行过程是:
首先计算表达式的值,若结果为“真”(非零),则执行循环体语句;然后再计算表达式的值,重复上述过程,直到表达式的
值为“假”(零)时结束循环,流程控制转到while语句的下一条语句。 小测验:
根据while语句的执行过程,下面程序的输出结果为: #include
【例5-2】显示1~10的平方。 【程序代码】 #include
int i=1; while(i<=10) int x=0,n=0; while(x<30) { }
printf(\x=(x+1)*(x+1); n=n+1;
}
{ }
printf(\i++;
使用while循环结构时应注意以下几点:
(1)while循环的特点是先判断条件后执行循环体语句。 (2)while循环中的表达式一般是关系表达式或逻辑表达式,也可以是其他任何合法的表达式。
(3)循环体语句可以是一个语句,也可以是多个语句,当只有一个语句时,外层的大括号可以省略,如果循环体是多个语句时,一定要用花括号“{}”括起来,以复合语句的形式出现。 (4)循环体内一定要有改变循环条件的语句,使循环趋于结束,否则循环将无休止地进行下去,即形成“死循环”。
【例5-3】求1到100的自然数之和,即计算sum=1+2+…+100. 【程序代码】 #include
int i,sum=0;
}
i=1;sum=0; while(i<=100) { }
printf(\sum+=i; i++;
小测验:
针对【例5-3】,思考下列问题: (1)是否可以不给sum和i赋初值? (2)是否可以将i++改成i=i+1?
(3)是否可以将i++放置在sum=sum+i之前? (4)在循环结束后,i的值是多少?
(5)如果求1~100之间的奇数和,即计算sum=1+3+5+…+99,程序该如何修改?
(6)求sum=1-2+3-4+5-…-100,程序该如何修改? 5.2.3 do-while语句
do-while语句属于直到型循环,其一般形式为: do {
循环体语句