
C语言程序设计 赵晓阳
赵晓阳

第5章循环结构程序设计 ·5.while语句和do~while语句 ·5.2for语句 ·53循环的嵌套 ·54其他控制语句 ·55循环结构的程序设计举例
第5章 循环结构程序设计 5.1 while语句和do ~ while语句 5.2 for语句 5.3 循环的嵌套 5.4 其他控制语句 5.5 循环结构的程序设计举例

5.1 while语句和do~vhile语句 ·whilei语句和do~whilei语句在实现循环的控制上非常相似,但有些情 况下它们之间也有区别。因为while语句的特点是先判断循环条件, 后执行循环体语句;而do~wile语句则是先执行循环体语句,后进 行条件判断。下面我们将分别讨论这两种语句的具体用法以及它们之 间的区别。 ·5.1.1 while语句 ·while语句实现的是“当型”循环结构。它的一般形式如下: ·while(表达式) ·循环体语句 下一页返回
5.1 while语句和do ~ while语句 while语句和do~while语句在实现循环的控制上非常相似,但有些情 况下它们之间也有区别。因为while语句的特点是先判断循环条件, 后执行循环体语句;而do~while语句则是先执行循环体语句,后进 行条件判断。下面我们将分别讨论这两种语句的具体用法以及它们之 间的区别。 5.1.1 while语句 while语句实现的是“当型”循环结构。它的一般形式如下: while(表达式) 循环体语句 下一页 返回

5.1 while语句和do~vhile语句 ·该语句的执行过程是先求解表达式的值,若表达式的值为“真”,则 执行循环体语句,循环体语句执行完后,自动返回继续判断表达式值, 若为“真”值则继续执行循环体语句,如此反复执行,直到表达式值 为“假”。其执行过程如图51所示。 ·例5-1计算m=1+2+3+..+n,其中n>1,由键盘输入。 ·算法设计分析:这是一个循环次序已知的累加和问题。先将赋值给, 再把1+2的值赋给m(即m=m+2),接着把m+3赋值给m(相当于 m=1+2+3),以此类推,直到完成到n的累加和问题。C语言的这种累 加关系可表示为m=m+i。 上一页下一页返回
5.1 while语句和do ~ while语句 该语句的执行过程是先求解表达式的值,若表达式的值为“真”,则 执行循环体语句,循环体语句执行完后,自动返回继续判断表达式值, 若为“真”值则继续执行循环体语句,如此反复执行,直到表达式值 为“假”。其执行过程如图5-1所示。 例5-1 计算 m=1+2+3+…+n,其中n>1,由键盘输入。 算法设计分析:这是一个循环次序已知的累加和问题。先将1赋值给m, 再把1+2的值赋给m(即m=m+2),接着把m+3赋值给m(相当于 m=1+2+3),以此类推,直到完成1到n的累加和问题。C语言的这种累 加关系可表示为m=m+i。 上一页 下一页 返回

5.1 while语句和do~while语包 ·算法描述如下: ·step1:输入n值; ·step2:累加求和变量赋初值,m=o; ·step3:累加次数计数器I置初值,i=l; ·step4:若循环次数未超过n,则反复执行step5~step6,否则转去 执行step7: ·step5:进行累加运算,m=m+i; ·step6:累加次数计数器加1,i=i+1; ·step7:打印输出结果。 上一页下一页返回
5.1 while语句和do ~ while语句 算法描述如下: step 1: 输入n值; step 2: 累加求和变量赋初值,m=0; step 3: 累加次数计数器I置初值,i=1; step 4: 若循环次数未超过n,则反复执行step 5~step 6,否则转去 执行step 7; step 5: 进行累加运算,m=m+i; step 6: 累加次数计数器加1,i=i+1; step 7: 打印输出结果。 上一页 下一页 返回

5.1 while语句和do~while语句 ●#include 。main() ·{ ·inti,m,n ·printf(("\n Please inputn:")方 ·scanf("%d”,&n); ●m=0; 。ie1; 上一页下一页返回
5.1 while语句和do ~ while语句 #include main ( ) { int i,m,n; printf(″\n Please input n:″); scanf(″%d″, &n); m=0; i=1; 上一页 下一页 返回

5.1 while语句和do~while语句 ·while(i<=n) 。{ ●m=m+i ·i=i+1; ·} ·printf("\nThe sum fromito%dis%d”,n,m); 。} 上一页下一页返回
5.1 while语句和do ~ while语句 while (i<=n) { m=m+i i=i+1; } printf(″\n The sum from 1 to %d is %d″, n, m); } 上一页 下一页 返回

5.1 while语句和do while语包 ·使用while循环时,需注意以下几点: ·①若循环体是多个语句组成(复合语句),则应该用花括号“将循环 体括住,如例5-1所示。当然,循环体只由一个语句组成,可将括号省 略。 ·②while语句后面的“()”不能省略,条件表达式可以为任何类型。 注意改变循环体控制变量的值,同时应避免出现下列这种情况的出现 (死循环),如: ·while()i=2; ·{while(i<o) ·sum=sum+i;{ ·i++;sum+=i; ·} 上一页下一页返回
5.1 while语句和do ~ while语句 使用while循环时,需注意以下几点: ①若循环体是多个语句组成(复合语句),则应该用花括号“{ }”将循环 体括住,如例5-1所示。当然,循环体只由一个语句组成,可将括号省 略。 ②while语句后面的“( )”不能省略,条件表达式可以为任何类型。 注意改变循环体控制变量的值,同时应避免出现下列这种情况的出现 (死循环),如: while (1) i=2; { while (i<10) sum=sum+i; { i++; sum+=i; } } 上一页 下一页 返回

5.1 while语句和do~vhile语句 ·③若在循环体中,遇到breaki语句,则跳出循环。 ·51.2 do~while语句 ·do~whilei语句实现的是“直到型”循环结构,它的一般形式如 下: ●do ·循环体语句 。while(表达式); ·这种语句的执行过程是先执行循环体语句,然后求解表达式的值,若 表达式的值为“真”,则自动返回继续执行循环体语句,直到表达式 值为“假”时结束循环,其执行过程如图52所示。 上一页下一页返回
5.1 while语句和do ~ while语句 ③若在循环体中,遇到break语句,则跳出循环。 5.1.2 do~while语句 do~while语句实现的是“直到型”循环结构,它的一般形式如 下: do 循环体语句 while(表达式); 这种语句的执行过程是先执行循环体语句,然后求解表达式的值,若 表达式的值为“真”,则自动返回继续执行循环体语句,直到表达式 值为“假”时结束循环,其执行过程如图5-2所示。 上一页 下一页 返回

5.1 while语句和do while语 句 ·例5-2用do~while语句计算 。m=1+2+3+..+n,其中n>1。 ·算法分析前面已介绍过,故分析省略。 ●#include 。main() ·{ ·inti,m,n; printf("\nPleaseinputn:") ·scanf("%d",&n); ●m=0; ·i=0; 上一页下一页返回
5.1 while语句和do ~ while语 句 例5-2 用do~while语句计算 m=1+2+3+…+n,其中n>1。 算法分析前面已介绍过,故分析省略。 #include main ( ) { int i,m,n; printf(″\n Please input n:″); scanf(″%d″, &n); m=0; i=0; 上一页 下一页 返回