第六章循环控制 goto语包 while语旬 do- while语旬 for语旬 break语旬 continue语旬 练习
第六章 循环控制 • goto语句 • while语句 • do-while语句 • for语句 • break语句 • continue语句 • 练习
§68概述 循环:反复执行称为“循环体”的程序段 循环控制常用于数学迭代、对象遍历等问 题的求解,几乎所有实用程序都包含循环。 ·C语言中用如下语旬实现循环 1、用goto语旬和if语旬构成循环。 2、用whie语旬。 3、用do- while语旬, 4、用for语旬
§6.1 概述 循环:反复执行称为“循环体”的程序段。 循环控制常用于数学迭代、对象遍历等问 题的求解,几乎所有实用程序都包含循环。 • C语言中用如下语句实现循环: 1、用goto语句和if语句构成循环。 2、用while语句。 3、用do-while语句。 4、用for语句
§62goto语句 般形式:goo语句标号 用:无条件转向“语句标号”处执 “语句标号”是一个标识符,它表示 程序指令的地址。 结构化程序设计方法主张限制使用goto语包 goto语旬有两种用途,一是与if语旬一起构成 循环结构,另一是从循环体中跳转到循环体外
§6.2 goto语句 一般形式: goto 语句标号 作 用: 无条件转向“语句标号”处执 行。 “语句标号”是一个标识符,它表示 程序指令的地址。 • 结构化程序设计方法主张限制使用goto语句。 • goto语句有两种用途,一是与if语句一起构成 循环结构,另一是从循环体中跳转到循环体外
「例6,1用语句和goto语句构成循环 1. sum=0 求∑z。 假 i<=100 maino sum=sum+ i=i+1 int isum=0 i=1 loop:if(i<=100)/标号表示程序指令的地址当还10时,执行加法 isum=sum i+十 goto loop, /无条件转向标号00p处的指令* print("%d"’,um);
[例6.1] 用if语句和goto语句构成循环, 求 。 = 100 i 1 i main() { int i,sum=0; i = 1; loop: if (i <= 100) /*标号表示程序指令的地址,当i≤100时,执行加法 */ { sum = sum + i; i++; goto loop; /*无条件转向标号loop处的指令 */ } printf("%d",sum); } sum=sum+i i=i+1 i<=100 假 真 i=1,sum=0
§63 while语句 般形式: while(表达式)语句 作用:实“当型”谱环。么表达式 当“表达式”非0(真)时,真 当P为真 执行whi语中的内嵌“语”[语句 A “语旬”是被循环执行的程序,称 为“循环体”。 特点:先判“表达式(条件)”,后执行语句。 循环体如果包含一个以上的语句,应该以复合语句形式出现 在循环体中应有使循环趋向于结束的语句
§6.3 while语句 一般形式:while (表达式) 语句 作用:实现“当型”循环。 当“表达式”非0(真)时, 执行while语句中的内嵌“语句” 。 “语句”是被循环执行的程序,称 为“循环体” 。 特点:先判“表达式(条件)” ,后执行语句。 • 循环体如果包含一个以上的语句,应该以复合语句形式出现. • 在循环体中应有使循环趋向于结束的语句。 语句 表达式 假 真 当P为真 A
例62]09 流程图: main( 1. sum=0 int i sun=0;/为循环赋初值* 假 i<=100 whie〔i<=100)/“当型”循环 sum=sum+ i=i+1 sum= sum t i i+十 /使循环趋于结束* i=1.um=0 printf("%d",sum) i<=100 真 假 sumesumtl i=i+1
[例6.2] 流程图: = 100 i 1 i sum=sum+i i=i+1 i<=100 假 真 main() i=1,sum=0 { int i,sum=0; /*为循环赋初值*/ i = 1; whie (i <= 100) /*“当型”循环*/ { sum = sum + i; i++; /* 使循环趋于结束*/ } printf("%d",sum); } i<=100 真 假 sum=sum+i i=i+1 i=1,sum=0
「例6.3从任意n个实数中选出最大数和最小数 main i int n, i=1; float max, min.X printf((“ input n,x:”); scanf(“%d%f”,&n,&x); max =mn=x while( imax) max=X; else if(x<min) mIn≡x i+十 printi(“Max=%f,Min=%fin”,max,min);
[例6.3]从任意 n 个实数中选出最大数和最小数 main() { int n , i = 1; float max , min , x ; printf(“input n , x :”); scanf(“%d%f ”,&n,&x); max = min = x ; while( imax) max = x; else if (x<min) min = x; i++ ; } printf(“Max=%f , Min=%f \n” , max, min); }
例6.4任意输入两个正整数,求它们的最大公约数 maino f long m, n, r, a, b printf(“ input n,n:”); scanf(%old %ld", &m, &n) if(m>n a=m; b=n; 3 else fa=n; b=m; i while(b!=0) fr=a%b; a=b;b=r; j printf(“%ld与%ld的最大公约数是:%ldn”,m,n,a) getch(;
[例6.4]任意输入两个正整数,求它们的最大公约数。 main() { long m, n, r, a, b; printf (“input m, n:”); scanf (“%ld%ld”, &m, &n); if (m>n) {a = m; b = n;} else {a = n; b = m;} r = a%b; while (r != 0) { a = b; b = r ; r = a%b ;} printf(“%ld与%ld的最大公约数是:%ld\n” , m, n, b); getch(); } main() { long m, n, r, a, b; printf (“input m, n:”); scanf (“%ld%ld”, &m, &n); if (m>n) {a = m; b = n;} else {a = n; b = m;} while (b != 0) {r = a%b ; a = b; b = r ;} printf(“%ld与%ld的最大公约数是:%ld\n” , m, n, a); getch(); }
§64d0-whle语句 般形式:do语句 while(表达式) 特点:“直到型”循环结构。 先执行一次“语句”,后判“表达式”,当“表 达式”非0,再执行“语句”,直到“表达式 为0,循环结束。 语句 语句 直到P为假 条件P
§6.4 do-while语句 一般形式: do 语句 while (表达式) 特点: “直到型”循环结构。 先执行一次“语句” ,后判“表达式” ,当“表 达式”非0,再执行“语句” ,直到“表达式” 为0,循环结束。 直到P为假 语句 语 句 非 条件P 0 0
100 「例65用 do-while语句求∑ maino i=l sum=0 int i sumo: i=1 sum=sum+ do 十 isum=sum +i; 真 i++; i100 也可以用do- while循环处理
[例6.5] 用do-while语句求 。 main() { int i,sum=0; i = 1; do { sum = sum + i; i++; } while (i100” ,这两者是等同的。 2、一般情况下,同一个问题,既可以用while循环处理, 也可以用do-while循环处理。 = 100 i 1 i i=1,sum=0 直到i>100 sum=sum+i i=i+1 sum=sum+i i=i+1 i<=100 假 真 i=1,sum=0