内蒙古科技大学 教 案 课程名称:C语言程序设计 编写时间:2014年2月16日 第四章程序的控制结构(四)(2学时) 备注 一、循环结构 容 二、for、while、do-whil、contine、break、goto语句 for、while、do-while语句 点 条件表达式和循环体、循环嵌套 循环结构 循环结构是结构化程序设计中最重要的一种结构。在很多程 序中需要将某些语句在特定的条件下重复执行多次,直到条件不 成立为止。其中被重复执行的语句称为循环体,决定重复是否继 续执行的条件称为循环条件。故循环语句是由循环体与循环条件 两部分组成的。 1.for语句 一般格式: for(表达式1:表达式2:表达式3) 循环体: 其中:表达式1、表达式2、表达式3是任意表达式:循环 体由语句组成,可以是单一语句、复合语句,还可以是空语句。 【执行过程】 ①计算表达式1。 ②计算表达式2,若值为非0(循环条件成立),则顺序执 行③,否则转至⑥执行。 ③执行循环体。 ④计算表达式3。 ⑤转至②。 ⑥循环结束,继续执行循环后的语句
内 蒙 古 科 技 大 学 教 案 课程名称: C 语言程序设计 编写时间:2014 年 2 月 16 日 第四章 程序的控制结构(四)(2 学时) 备注 内 容 一、循环结构 二、for、while、do-while、contine、break、goto 语句 重 点 for、while、do-while 语句 难 点 条件表达式和循环体、循环嵌套 循环结构 循环结构是结构化程序设计中最重要的一种结构。在很多程 序中需要将某些语句在特定的条件下重复执行多次,直到条件不 成立为止。其中被重复执行的语句称为循环体,决定重复是否继 续执行的条件称为循环条件。故循环语句是由循环体与循环条件 两部分组成的。 1.for 语句 一般格式: for(表达式 1;表达式 2;表达式 3) 循环体; 其中:表达式 1、表达式 2、表达式 3 是任意表达式;循环 体由语句组成,可以是单一语句、复合语句,还可以是空语句。 【执行过程】 ① 计算表达式 1。 ② 计算表达式 2,若值为非 0(循环条件成立),则顺序执 行③,否则转至⑥执行。 ③ 执行循环体。 ④ 计算表达式 3。 ⑤ 转至②。 ⑥ 循环结束,继续执行循环后的语句
来是 #include <stdio.h> inti,sum 件令i的值从1变化到100,每次步 sum=sum+i: 体将i的值累加到sum中/ printf("sum=%dn".sum); 2.while语句 一般格式: while(表达式) 循环体 【执行过程】 ①计算表达式的值,若值为非0(循环条件成立),则顺序 执行②,否则转至④执行。 ②执行循环体。 ③转至①。 ④循环结束,执行while循环后的语句。 例愿求智 #include <stdio.h> main() int i=1,sum=0; while (i<=100) sum-sum+i; 1++: printf("sum=%d\n",sum);
例题:求 #include <stdio.h> main() {int i,sum=0; for(i=1;i<=100;i++) /*令 i 的值从 1 变化到 100,每次步 长为 1*/ sum=sum+i; /*将 i 的值累加到 sum 中*/ printf("sum=%d\n",sum); } 2. while 语句 一般格式: while(表达式) 循环体 【执行过程】 ① 计算表达式的值,若值为非 0(循环条件成立),则顺序 执行②,否则转至④执行。 ② 执行循环体。 ③ 转至①。 ④ 循环结束,执行 while 循环后的语句。 例题:求 #include <stdio.h> main() { int i=1,sum=0; while (i<=100) { sum=sum+i; i++; } printf("sum=%d\n",sum); }
3.do-while语句 般格式: do 循环体 式): 【执行过程】 执行循环体(语句)。 ②计算表达式的值,若值为非0(循环条件成立),则转至①继 续循环,否则顺序执行③。 ③循环结束,执行循环后的语句。 例题:求是 #include<stdio.h> main( { int i=1,sum=0; do sum=sum+i; t+: }while (i<=100); printf("sum=%d\n",sum). 4.break语句、continue语句和goto语句 4.1 break 一般格式:break: 【说明】 使用break语句可以提前结束由while,for和d -while 语句构成的循环,而去执行循环下面的语句
3. do-while 语句 一般格式: do 循环体 while ( 表 达 式); 【执行过程】 ① 执行循环体(语句)。 ② 计算表达式的值,若值为非 0(循环条件成立),则转至①继 续循环,否则顺序执行③。 ③ 循环结束,执行循环后的语句。 例题:求 #include <stdio.h> main() { int i=1,sum=0; do { sum=sum+i; i++; } while (i<=100); printf("sum=%d\n",sum); } 4. break 语句、continue 语句和 goto 语句 4.1 break 一般格式:break; 【说明】 使用 break 语句可以提前结束由 while,for 和 do-while 语句构成的循环,而去执行循环下面的语句
4.2 continue语句 一般格式:continue: 【说明】 continue语句跳过循环体中尚未执行的语句而 执行下次循环, 它和break语句不同,break语句是结束循环, 而continue语句是结束本次循环。 4.3got0语句 一般格式:g0t0<标号>: 【说明】 g0to语句为无条件转向语句,语句标号用标识 符表示。 带有标号的语句的一般形式为: 标号:语句 注意:在g0to语句中的语句标号后是不带冒号的,而在“带 有标号的语句”中“标号”后带有“:”。goto语句最常见 的用途是:从循环体中跳转到循环体外,如果用在单层循环中, 作用同 e 5.循环结构的嵌套 一个循环语句中的循环体如果含有另一个循环结构,称为循 环的嵌套。内嵌的循环还可以嵌套循环,称为多重循环。hile do一hile和for三种循环之间可以相互嵌套。 例题:求100200之间的全部素数 #include<stdio.h> #include<math.h> main() int m,i,n=0; double k; for(m=100:m<=200:m=m+1)
4.2 continue 语句 一般格式:continue; 【说明】 continue 语句跳过循环体中尚未执行的语句而 执行下次循环,它和 break 语句不同,break 语句是结束循环, 而 continue 语句是结束本次循环。 4.3 goto 语句 一般格式:goto <标号>; 【说明】 goto 语句为无条件转向语句,语句标号用标识 符表示。 带有标号的语句的一般形式为: 标号: 语句 注意:在 goto 语句中的语句标号后是不带冒号的,而在“带 有标号的语句” 中“标号”后带有“:”。goto 语句最常见 的用途是:从循环体中跳转到循环体外,如果用在单层循环中, 其作用同 break;如果用在循环嵌套程序中,则可以实现从内循 环直接跳转到所有循环之外。 5.循环结构的嵌套 一个循环语句中的循环体如果含有另一个循环结构,称为循 环的嵌套。内嵌的循环还可以嵌套循环,称为多重循环。while、 do-while 和 for 三种循环之间可以相互嵌套。 例题:求 100~200 之间的全部素数。 #include<stdio.h> #include<math.h> main() { int m,i,n=0; double k; for(m=100;m<=200;m=m+1)
k=sqrt(m); for(i=2:i<=k:i++) if(m%i==0)break: if(i>k)(printf("%d ",m)n=n+1: if(n%10==0)printf("\n"): printf("\n") 6.利用循环结构实现的常见算法 6.1递推法: 递推法:由前次的结论推算出本次的结论。 例题:求斐波那契数列数列的前10项: 1,1,2,3,5,8,13,21. 斐波那契数列在程序中可以用多种方法进行处理。按照其通 项递推公式利用循环控制来实现题目的要求最为简便。 #include <stdio.h> main() 【inti: long fl,f2,fi; f1=1;f2=1: printf("%ld $ld "fl,f2); for(i=3:i<=10:i++) fi=f2+f1:printf("%ld "fi): f1=f2; f2=fi: printf("\n")
{ k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>k) {printf("%d ",m);n=n+1;} if(n%10==0) printf("\n"); } printf("\n");} 6. 利用循环结构实现的常见算法 6.1 递推法: 递推法:由前次的结论推算出本次的结论。 例题:求斐波那契数列数列的前 10 项: 1,1,2,3,5,8,13,21. 斐波那契数列在程序中可以用多种方法进行处理。按照其通 项递推公式利用循环控制来实现题目的要求最为简便。 #include <stdio.h> main() { int i; long f1,f2,fi; f1=1; f2=1; printf("%ld %ld ",f1,f2); for(i=3;i<=10;i++) { fi=f2+f1; printf("%ld ",fi); f1=f2; f2=fi; } printf("\n");}