2.5.3 循环结构
循环结构表示程序反复执行某个或某些操作,直到某些条件为假时才可终止循环。循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构。
循环结构的基本形式有两种:当型循环和直到型循环,其流程分别如图2.7(a)、(b)所示。
|
| (点击查看大图)图2.7 循环结构 |
当型循环结构的执行过程是,首先判断条件,当满足条件时执行循环体,执行完后自动返回循环入口;如果条件不满足,则退出循环体直接到达流程出口处,所以是先判断后执行。C语言中用while语句实现当型循环结构。while语句的调用形式为:
- while (表达式) 循环体语句
直到型循环结构的执行过程是,从结构入口直接执行循环体,在循环终点处判断条件,如果条件不满足,返回入口处继续执行循环体,直到循环判断条件为真时再退出循环到达流程出口处,属于先执行后判断。C 语言中用do while 语句来实现直到型循环结构。do while语句的调用形式为:
- do
- 循环体语句
- while(表达式)
程序2.7 是一个使用do while语句来实现直到型循环结构的例子。
【程序2.7】求n!(n!=1*2*3*…*(n-1)*n)。
这是若干项的连乘问题,执行流程如图2.8 所示,代码实现如test7.c。
|
| 图 2.8 用do_while循环求n! |
程序2.7:test7.c。
- #include <stdio.h>
- main()
- {
- int i,n;
- long s;
- s=1;
- i=1;
- printf("Please input n: ");
- scanf("%d",&n);
- do{s*=i; /*循环体*/
- i++;
- } while ( i<=n ); /*循环结束的判断条件*/
- printf("%d!=%d\n",n,s);
- }
程序运行结果如下(↙表示回车):
- Please input n: 5↙
- 5!=120
C语言中,还有一种for 循环语句。for 语句的调用形式如下:
- for(表达式1; 表达式2; 表达式3)
- {循环体语句}
它等价于下列while语句:
- 表达式1;
- while(表达式2){
- 循环体语句;
- 表达式3;
- }
for 语句的执行过程如图2.9 所示。首先计算表达式1的值,然后检测表达式2 的值,若其值为“真”,则执行循环体语句,执行完毕后,再计算表达式3,然后检测表达式2 的值,若为“真”,则继续执行循环体语句,如此循环,直到表达式2的值为“假”时终止循环。
|
| 图2.9 for循环执行流程 |
表达式1 通常为循环变量赋初值的表达式,表达式2为控制循环的表达式,表达式3通常是改变循环变量的表达式。程序2.8给出了一个使用for 语句的简单例子。
【程序2.8】用for 循环计算1~100的整数累加和:test8.c。
- #include <stdio.h>
- main()
- {
- int i,n=0;
- for(i=1;i<=100;i++)
- {
- n+=i;
- }
- printf("n=%d",n);
- }
程序运行结果如下:
- n=5050
根据for 循环的判断表达式2,循环体一共执行了100 次,即“n+=i;”语句一共被执行了100 次。