靳润昭C语言教程讲义 2001年2月17日 6循环控制 61概述 62goto语句以及用goto语句构成循环 63 while语句 64do- while语句 65for语句 66循环的嵌套 67几种循环的比较 68 break和 continue语句 69999 68.1 break语句 682 continue语句 10 69程序举例 11 6循环控制 61概述 循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序 段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。C语 言提供了多种循环语句,可以组成各种不同形式的循环结构。 1)用goto语句和if语句构成循环 2)用 while语句; 3)用 do-while语句; 4)用for语句 62goto语句以及用goto语句构成循环 goto语句是一种无条件转移语句,与 BASIC中的goto语句相似。goto语句的使用格 式为: goto语句标号 其中标号是一个有效的标识符,这个标识符加上一个":〃一起出现在函数内某处,执行 goto语句后,程序将跳转到该标号处并执行其后的语句。另外标号必须与goto语句同处于 个函数中,但可以不在一个循环层中。通常goto语句与if条件语句连用,当满足某一条 件时,程序跳到标号处运行。 goto语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时, 用goto语句则比较合理 【例6.1】用goto语句和if语句构成循环,nl aino 第1页
靳润昭 C 语言教程讲义 2001 年 2 月 17 日 第1页 6 循环控制 ................................................................................................................... 1 6.1 概述................................................................................................................. 1 6.2 goto 语句以及用 goto 语句构成循环................................................................... 1 6.3 while 语句......................................................................................................... 2 6.4 do-while 语句.................................................................................................... 4 6.5 for 语句............................................................................................................. 6 6.6 循环的嵌套 ...................................................................................................... 9 6.7 几种循环的比较 ............................................................................................... 9 6.8 break 和 continue 语句........................................................................................ 9 6.8.1 break 语句 ............................................................................................... 9 6.8.2 continue 语句........................................................................................ 10 6.9 程序举例.........................................................................................................11 6 循环控制 6.1 概述 循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序 段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。C语 言提供了多种循环语句,可以组成各种不同形式的循环结构。 1) 用 goto 语句和 if 语句构成循环; 2) 用 while 语句; 3) 用 do-while 语句; 4) 用 for 语句; 6.2 goto 语句以及用 goto 语句构成循环 goto 语句是一种无条件转移语句, 与 BASIC 中的 goto 语句相似。goto 语句的使用格 式为: goto 语句标号; 其中标号是一个有效的标识符,这个标识符加上一个“:”一起出现在函数内某处, 执行 goto 语句后,程序将跳转到该标号处并执行其后的语句。另外标号必须与 goto 语句同处于 一个函数中,但可以不在一个循环层中。通常 goto 语句与 if 条件语句连用, 当满足某一条 件时, 程序跳到标号处运行。 goto 语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时, 用 goto 语句则比较合理。 【例 6.1】用 goto 语句和 if 语句构成循环, = 100 n 1 n 。 main() {
靳润昭C语言教程讲义 2001年2月17日 int i, sum=0: oop: if(i<=100) isum=sumti goto loop; I printf("%d\n", sum) 63whle语句 while语句的一般形式为 while(表达式)语句 其中表达式是循环条件,语句为循环体 while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。其执行 过程可用下图表示。 表达式 非0 语句 n 【例6.2】用 while语句求n=l 用传统流程图和N-S结构流程图表示算法,见图: 第2页
靳润昭 C 语言教程讲义 2001 年 2 月 17 日 第2页 int i,sum=0; i=1; loop: if(i<=100) {sum=sum+i; i++; goto loop;} printf("%d\n",sum); } 6.3 while 语句 while 语句的一般形式为: while(表达式)语句 其中表达式是循环条件,语句为循环体。 while 语句的语义是:计算表达式的值,当值为真(非 0)时, 执行循环体语句。其执行 过程可用下图表示。 【例 6.2】用 while 语句求 = 100 n 1 n 。 用传统流程图和 N-S 结构流程图表示算法,见图:
靳润昭C语言教程讲义 2001年2月17日 非0 sum=sum+ i 当i100 main while(i<=100) sUmsumtl printf("%d\n", sum) 【例6.3】统计从键盘输入一行字符的个数 #include <stdio. h> maino[ printf( input a string: \n") while(getchar!='\n')n++ printf(%d,n) 第3页
靳润昭 C 语言教程讲义 2001 年 2 月 17 日 第3页 main() { int i,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("%d\n",sum); } 【例 6.3】统计从键盘输入一行字符的个数。 #include <stdio.h> main(){ int n=0; printf("input a string:\n"); while(getchar()!='\n') n++; printf("%d",n); }
靳润昭C语言教程讲义 2001年2月17日 本例程序中的循环条件为 getchar!=’n’,其意义是,只要从键盘输入的字符不是回 车就继续循环。循环体n+完成对输入字符个数计数。从而程序实现了对输入一行字符的字 符个数计数 使用 while语句应注意以下几点 1) while语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(非0)即可 继续循环, 【例6.4】 mainO( int a=0. n: tf(\n input n:") scanf(%d", &n); printf(%d a++* 本例程序将执行n次循环,每执行一次,n值减1。循环体输出表达式a++凇的值。该 表达式等效于(a*2;a++)。 2)循环体如包括有一个以上的语句,则必须用{括起来,组成复合语句。 64 do-while语句 do-while语句的一般形式为 语句 while(表达式); 这个循环与 while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为 真,如果为真则继续循环;如果为假,则终止循环。因此,do-whie循环至少要执行一次 循环语句。其执行过程可用下图表示。 盾环体语句 表达式 0 第4页
靳润昭 C 语言教程讲义 2001 年 2 月 17 日 第4页 本例程序中的循环条件为 getchar()!='\n',其意义是, 只要从键盘输入的字符不是回 车就继续循环。循环体 n++完成对输入字符个数计数。从而程序实现了对输入一行字符的字 符个数计数。 使用 while 语句应注意以下几点: 1) while 语句中的表达式一般是关系表达或逻辑表达式,只要表达式的值为真(非 0)即可 继续循环。 【例 6.4】 main(){ int a=0,n; printf("\n input n: "); scanf("%d",&n); while (n--) printf("%d ",a++*2); } 本例程序将执行 n 次循环,每执行一次,n 值减 1。循环体输出表达式 a++*2 的值。该 表达式等效于(a*2;a++)。 2) 循环体如包括有一个以上的语句,则必须用{}括起来,组成复合语句。 6.4 do-while 语句 do-while 语句的一般形式为: do 语句 while(表达式); 这个循环与 while 循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为 真, 如果为真则继续循环;如果为假, 则终止循环。因此, do-while 循环至少要执行一次 循环语句。其执行过程可用下图表示
靳润昭C语言教程讲义 2001年2月17日 循环体语句 当表达式值为真 n 【例6.5】用 do-while语句求n= 用传统流程图和N-S结构流程图表示算法,见图: sum=sum+ 1 真 长100 假 1=+1 >100 hile(i<=100) printf("%d\n", sum 第5页
靳润昭 C 语言教程讲义 2001 年 2 月 17 日 第5页 【例 6.5】用 do-while 语句求 = 100 n 1 n 。 用传统流程图和 N-S 结构流程图表示算法,见图: main() { int i,sum=0; i=1; do { sum=sum+i; i++; } while(i<=100) printf("%d\n",sum); }