C语言程序设计教案 盾环结构程序设计(一) 说明 本讲1.循环结构的概念 2. While语句的一般形式、流程图、执行过程 3.Do- while语句的一般形式、流程图、执行过程 4.for语句的一般格式、流程图、执行过程 5.三种循环的比较 重点1·Wh语句的执行过程及whe话句的应用 2.Do-whle语句的执行过程及 while语句的应用 3.for语句的的执行过程及应用 难点|1.whle语句的应用 2.Do- while语句应用 3.for语句的执行过程及应用 在许多问题中需要用到循环控制,例如,要输入全校学生成绩, 求若干个数之和。迭代求根等。几乎所有实用的程序都包含循环。循 环结构是结构化程序设计的基本结构之一,它和顺序结构、选择结构 共同作为各种复杂程序的基本构造单元。 循环结构的概念 引入利用计算机重复处理某些实际问题就构成了循环结构。在循环结 构中将某些语句重复执行,这些语句称为循环体;每重复一次都要判 断是继续重复还是停止重复,这个判断所依据的条件称为循环条件 循环体与循环条件一起构成了循环结构。 举例 例1:求1+2+3+.19+10的和 要完成上面的累加求和运算,设sum为累加和变量,i为循环控 制变量,用于控制循环次数,也就是循环继续的条件,并且i由1变 到10,实现上述算法的NS图如下 i=1. sum=0 当i<10 sum=sunt i=i+1 输出sm的值 要用C语言实现上述算法,就要学习实现循环的语句
C 语言程序设计教案 1 循环结构程序设计(一) 内 容 说明 本讲 内容 重点 难点 引入 举例 1.循环结构的概念 2.While 语句的一般形式、流程图、执行过程 3.Do--while 语句的一般形式、流程图、执行过程 4.for 语句的一般格式、流程图、执行过程 5.三种循环的比较 1.While 语句的执行过程及 while 语句的应用 2.Do--while 语句的执行过程及 while 语句的应用 3.for 语句的的执行过程及应用 1.while 语句的应用 2.Do--while 语句应用 3.for 语句的执行过程及应用 在许多问题中需要用到循环控制,例如,要输入全校学生成绩, 求若干个数之和。迭代求根等。几乎所有实用的程序都包含循环。循 环结构是结构化程序设计的基本结构之一,它和顺序结构、选择结构 共同作为各种复杂程序的基本构造单元。 一、循环结构的概念 利用计算机重复处理某些实际问题就构成了循环结构。在循环结 构中将某些语句重复执行,这些语句称为循环体;每重复一次都要判 断是继续重复还是停止重复,这个判断所依据的条件称为循环条件; 循环体与循环条件一起构成了循环结构。 例 1:求 1+2+3+……+9+10 的和 要完成上面的累加求和运算,设 sum 为累加和变量,i 为循环控 制变量,用于控制循环次数,也就是循环继续的条件,并且 i 由 1 变 到 10,实现上述算法的 N-S 图如下。 要用 C 语言实现上述算法,就要学习实现循环的语句
C语言程序设计教案 、 While语句 (1)【一般格式】 whle(表达式) 循环体语句 while语句是一种先判断后执行的循环语句 【注意】 ①“表达式”表达式可以是任何合法的C语言表达式。一般为关系/将实际间 题如何写 表达式或逻辑表达式。 成关系表 ②循环体可以是单个语句,也可是多个语句:如果是多个语句必须达式及逻 使用大括号“{}”将多个语句括起来构成一个复合语句。 辑表达式 2)【流程图及NS图】 表达式> 当表达式的值为真 循环体 循环体 (3)【执行过程】 先计算表达式的值并判断,若表达式的值为真(非零),则执行 循环体的语句:若表达式的值为假(零)时,结束循环 (4)【应用】 举例利用h语句“求1+2+3+-+9+10的和”参考程序如下:分析程序 的循环情 while(i<=10) 程序写入 i sum+=i; IC环境中 运行,观察 %od\ 运行结果 例2:利用 while语句计算n!(即:1x2x3x..xn) 参考程序如下: i int F=1,n, anf(%d”,&n), 分析循环 hile(i<=n) 中语句的
C 语言程序设计教案 2 举例 二、While 语句 ⑴【一般格式】 while(表达式) { 循环体语句 } while 语句是一种先判断后执行的循环语句。 【注意】 ① “表达式” 表达式可以是任何合法的 C 语言表达式。一般为关系 表达式或逻辑表达式。 ② 循环体可以是单个语句,也可是多个语句;如果是多个语句必须 使用大括号“{ }”将多个语句括起来构成一个复合语句。 ⑵【流程图及 N-S 图】 ⑶【执行过程】 先计算表达式的值并判断,若表达式的值为真(非零),则执行 循环体的语句;若表达式的值为假(零)时,结束循环。 ⑷【应用】 利用 while 语句“求 1+2+3+……+9+10 的和”参考程序如下: main() {int sum,i; sum=0;i=0; while (i<=10) { sum+=i; i++; } printf(“sum=%d\n”,sum); } 将实际问 题如何写 成关系表 达式及逻 辑表达式 分析程序 的循环情 况 程序写入 TC 环境中 运行,观察 运行结果 例 2:利用 while 语句计算 n!(即:1x2x3x……xn) 参考程序如下: main( ) { int i=1, n, s=1; scanf(“%d”, &n); while(i<=n) 分析循环 中语句的 表达式 循环体 假 真 当表达式的值为真 循环体
C语言程序设计教案 写法 + printf("s%\n"s);i 三、do- while语句 (1)【一般格式】 循环体语句 } while(表达式); do- while语句是一种先执行后判断的循环语句 (2)【流程图及NS图】 循环体 循环体 表达式> 当条件表达式为真 (3)【执行过程】 先执行循环体语句,再计算表达式的值,若表达式的值为真(非 零),再执行循环体的语句:当表达式的值为假(零)时,结束循环。 (4)【应用】 例例3:用d- while i语句编程实现求1+2+3+,+9+10的和。 参考程序如下: 注意循环 条件的位 =1; 程序写入 环境中 sum-sum 运行,观察 i++,) while(K<=10) 运行结果 printf("sum=%d\n", sum);) 例4:用do- while语句编程计算n!(即:1x2x3x…n) 模仿例3同学们自己写出相应的程序。 四、whle与do- while语句的区别 (1) while语句是先判断,后执行的循环语句;而do-whle语句是先执 行,后判断循环语句 (2)当第一次进行判断表达式的值时,表达式的值为假时,whle语句 不执行循环体语句,而转去执行循环结构的下一语句:而do- while语 句先执行一次循环体语句,而后转去执行循环结构的下一语句
C 语言程序设计教案 3 { s=s*i; i++; } printf("s=%d\n",s); } 三、do—while 语句 ⑴ 【一般格式】 do { 循环体语句 } while(表达式); do - while 语句是一种先执行后判断的循环语句。 ⑵ 【流程图及 N-S 图】 ⑶【执行过程】 先执行循环体语句,再计算表达式的值,若表达式的值为真(非 零),再执行循环体的语句;当表达式的值为假(零)时,结束循环。 ⑷【应用】 写法 举例 例 3:用 do—while 语句编程实现 求 1+2+3+……+9+10 的和。 参考程序如下: main( ) { int i, sum=0; i=1; do { sum=sum+i; i++; } while(i<=10); printf("sum=%d\n",sum); } 例 4:用 do—while 语句编程计算 n!(即:1x2x3x……xn) 模仿例 3 同学们自己写出相应的程序。 四、while 与 do-while 语句的区别 ⑴ while 语句是先判断,后执行的循环语句;而 do-while 语句是先执 行,后判断循环语句。 ⑵ 当第一次进行判断表达式的值时,表达式的值为假时,while 语句 不执行循环体语句,而转去执行循环结构的下一语句;而 do-while 语 句先执行一次循环体语句,而后转去执行循环结构的下一语句。 注意循环 条件的位 置 程序写入 TC 环境中 运行,观察 运行结果 循环体 真 假 表达式 循环体 当条件表达式为真
C语言程序设计教案 (3)不论是whle还是 do- while语句构成的循环,在循环体中都应有修 改循环控制变量值的语句,否则程序会进行无限循环状态。 1. while与do- while语句的格式 2.循环条件的设计。 3.注意循环结束时循环变量的值 4. while与do-whle语句的比较 五、for语句 (1)【一般格式】 for(表达式1:表达式2;表达式3) 循环体语句 【注意】 循环体语句可以是单个语句,也可是复合语句或空语句。三个表 达式之间用分号分隔 (2)【流程图及NS图】 匚计算表达式口 「计算表达式1的值 表达式 当表达式2为真 体 循环体 计算表达式3的值 计算表达式3 一般 表达式1:为循环变量赋初值。 表达式2:控制循环条件。 表达式3:控制循环变量的变化。 (3)【执行过程】 先计算表达式1的值:再计算表达式2的值,若为真,则执行循分析循环 环体,最后计算表达式3的值:再次计算表达式2的值,若为真,再过程 执行循环体,再计算表达式3的值;直到某次表达式2的值为假循环 结束,执行循环语句的后续语句 4)【应用】 实例利用or语句“求1+2+3+……+9+10的和” 参考程序如下 main( 循环结束 时变量i的 for(sum=0,=1;i<=10,i++) sum=sum+l printf("sum=%d\n", sum); j (5)for循环语句的特殊格式 以【for(i=1;j<=10;++)】语句为例
C 语言程序设计教案 4 ⑶ 不论是 while 还是 do-while 语句构成的循环,在循环体中都应有修 改循环控制变量值的语句,否则程序会进行无限循环状态。 1.while 与 do-while 语句的格式。 2.循环条件的设计。 3.注意循环结束时循环变量的值。 4.while 与 do-while 语句的比较 五、for 语句 ⑴【一般格式】 for(表达式 1;表达式 2;表达式 3) 循环体语句; 【注意】 循环体语句可以是单个语句,也可是复合语句或空语句。三个表 达式之间用分号分隔。 ⑵【流程图及 N-S 图】 一般: 表达式 1:为循环变量赋初值。 表达式 2:控制循环条件。 表达式 3:控制循环变量的变化。 实例 ⑶【执行过程】 先计算表达式 1 的值;再计算表达式 2 的值,若为真,则执行循 环体,最后计算表达式 3 的值;再次计算表达式 2 的值,若为真,再 执行循环体,再计算表达式 3 的值;直到某次表达式 2 的值为假循环 结束,执行循环语句的后续语句。 ⑷【应用】 利用 for 语句“求 1+2+3+……+9+10 的和” 参考程序如下: main( ) { int i; for (sum=0,i=1;i<=10;i++) { sum=sum+i; } printf("sum=%d\n",sum); } ⑸ for 循环语句的特殊格式 以【for (i=1;i<=10;i++) 】 语句为例 分析循环 过程 循环结束 时变量 i 的 值 计算表达式1 循环体 计算表达式3 表达式2 真 假 循环体 当表达式2为真 计算表达式1的值 计算表达式3的值
C语言程序设计教案 ①省略表达式1,语句格式为 【for(:表达式2:表达式3)】→ for(;imax)max-x else if( x<min) min=x 在TC环境 printf("max=%d min=%d\n, max, min); j 程序
C 语言程序设计教案 5 ① 省略表达式 1,语句格式为: 【for(;表达式 2;表达式 3)】→ ② 省略表达式 2,语句格式为 【for(表达式 1;;表达式 3)】→ ③ 省略表达式 3,语句格式为: 【for(表达式 1;表达式 2;)】→ ④ 省略表达式 1 及 3,语句格式为 for(;表达式 2;) → ⑤ 省略三个表达式,语句格式为: for(;;) → 六、三种循环语句的比较 ⑴ while 语句和 for 语句是属于先测试终止条件的循环语句,故循环 体有可能一次也不执行。 ⑵ do—while 语句是后测试终止条件的循环语句,循环体至少执行一 次。 ⑶ for 语句与 while 语句本质上相近,很容易互换。所有循环语句都 是在终止条件为真时才能执行循环体。 ⑷ 如果循环次数可以在进入循环语句之前确定,使用 for 语句较好; 在循环次数难以确定时使用 while 和 do—while 语句较好。 举例说明 七、例题 【例 1】 从键盘上输入 10 个数,求出其中的最大值与最小值。 参考程序如下 main( ) { int i , x , max , min ; scanf(“%d” , &x); max=x; min=x; for ( i=2; imax) max=x ; else if( x<min) min=x; } printf(“max=%d min=%d\n” , max , min); } 对程序进 行详细分 析 在 TC 环境 中运行该 程序 i=1; for ( ;i<=10;i++) for(i=1 ; ; i++) { if(i<=10) ……} for (i=1 ;i<=10;) { …… i++; } i=1; for ( ;i<=10; ) { …… i++; } i=1; for ( ; ; ) { if (i<=10) …… i++; }
C语言程序设计教案 【例2】输出100到200之间可以被7整除的数 f int k; for(k=100;i=. 000001) i sum=sum+t; n=n+2: S-S ts/n: i pl pl 【例4】计算用户输入的所有正整数的和,用户输入0时结束。 rinf("Please input: data"); scanf("%ld",&data) f( data for(:(c= getchar0)!=“\n’) { pr 作法2用 while循环 #include
C 语言程序设计教案 6 【例 2】 输出 100 到 200 之间可以被 7 整除的数。 main() { int k; for(k=100;i main() { int s; /* s 是放符号的变量 */ float n , t , sum, pi; /* n 是第 n 项的分母,t 是第 n 项的值,sum t=1; sum=0 ; n=1 ; s=1; while(fabs(t)>=.000001) { sum=sum+t; n=n+2; s= -s; t=s/n; } pi=sum*4; printf("pi=%f\n",pi); } 【例 4】计算用户输入的所有正整数的和,用户输入 0 时结束。 #include main() { long data, sum = 0; do { printf(“Please input : data=”); scanf("%ld", &data); if( data main() { char c; for(;(c=getchar())!=‘\n’;) { c=c-32; printf(“%c”,c); } } 作法 2 用 while 循环 #include 是 累 加 器 */
C语言程序设计教案 mal while((c=getchar O)!="\n') printf(“%c”,c) 【例6】求两个整数的最大公约数。 mal /*余数*/ printf("请输入两个整数m,n:") scanf ( %d, r=mion while (r! =0) - n printf("最大公约数=%d"″,n);} 例7】译密码。密码规律为:每个字母用其后第四个字母代替,26 个字母循环排列。 #include man while((c=getchar O)!=\n') if(c>='a'&&c=A'&c='w&&c=W&&c<=Z”) printf(%c" 7
C 语言程序设计教案 7 main() { char c; while((c=getchar())!=‘\n’) {c=c-32; printf(“%c”,c); }} 【例 6】求两个整数的最大公约数。 main( ) {int m, n; int r; /*余数*/ printf(″请输入两个整数 m, n: ″); scanf(″%d, %d″, &m, &n); r=m%n; while (r!=0) {m=n; n=r: r=m%n; } printf(″最大公约数=%d″, n); } 【例 7】译密码。密码规律为∶每个字母用其后第四个字母代替,26 个字母循环排列。 #include main() { char c,c1; while((c=getchar())!='\n') { if((c>='a'&&c='A'&& c='w'&&c='W'&&c<='Z')) c=c-22; printf("%c",c); } }
C语言程序设计教案 循环结构程序设计(二) 内容 说明 本讲1. Break语句及应用 内容2. Continue语句及应用 3. Break语句与 Continue语句区别 4.循环嵌套的概念及应用 重点 Break、 Continue语句及循环嵌套的应用 难点循环嵌套的应用
C 语言程序设计教案 8 循环结构程序设计(二) 内 容 说明 本讲 内容 重点 难点 1.Break 语句及应用 2.Continue 语句及应用 3.Break 语句与 Continue 语句区别 4.循环嵌套的概念及应用 Break、Continue 语句及循环嵌套的应用 循环嵌套的应用
C语言程序设计教案 Break语句 【一般格式】 break 【功能】使程序的执行从包含它的最内层循环或 switch语句中跳出。 【注意】 break只能用于 switch语句或循环语句中。在循环结构中通常用if 语句与之配合使用 Break语句只能从最内层循环跳到外层循环中。 【应用】 举例例【计算半径r=1到r=10的圆面积,直到面积大于100为止】 main 分析面积 I int r 大于100 float area; 时循环执 for(r=1;r<=10;r++) 行了几次 i area=3. 14*r*r if(area)=100 )break printf(r=%d area=%f\n",r, area) 、 continue语句 【一般格式】 continue: 【功能】结束本次循环,继续下一次循环。 【注意】 continue语句只用于循环结构中,通常与if语句配合使用。 【应用】 例输出100到200之间不能被7整除的数。 int n 实例for(n=100:n<=200;n++) if(n%7==0) continue 解释结束 printf(%d\t", n); 本次循环 的概念
C 语言程序设计教案 9 举例 实例 一、Break 语句 【一般格式】 break; 【功能】使程序的执行从包含它的最内层循环或 switch 语句中跳出。 【注意】 break 只能用于 switch 语句或循环语句中。在循环结构中通常用 if 语句与之配合使用。 Break 语句只能从最内层循环跳到外层循环中。 【应用】 例 【计算半径 r=1 到 r=10 的圆面积,直到面积大于 100 为止】。 main() { int r; float area; for (r=1;r=100) break; printf("r=%d area=%f\n",r,area); } } 二、continue 语句 【一般格式】 continue; 【功能】 结束本次循环,继续下一次循环。 【注意】 continue 语句只用于循环结构中,通常与 if 语句配合使用。 【应用】 例 输出 100 到 200 之间不能被 7 整除的数。 main() { int n; for(n=100;n<=200;n++) { if(n%7= =0) continue; printf("%d\t", n); } } 分析面积 大于 100 时循环执 行了几次 解释结束 本次循环 的概念
C语言程序设计教案 三、 break语句与 continue语句区别 continue是结束本次循环,进行下一次循环,而不是结束整个循环 过程。对单层循环, break语句是结束整个循环,转到循环体外:对于 多层循环,则是结束最内层循环。 例将上例中的 continue;换成 break:执行程序,观察输出结果。 四、循环嵌套的概念及应用 当一个循环结构中包含另一个循环结构时,称为循环的嵌套或多重 循环。在循环嵌套中, 【应用】 例编程输出乘法“九九表” f int m, n, k; 在TC环 f for(n=l; n=20) break break;与 if(b%3==1) continue b+=3 的作用 printf("%d", b); 例2计算1!+2!+3!+…+1001 mal 分析内层 i int 1,j 循环与外 double t. 层循环的 关系 for(i=1;i<=100,i++) /*求和* {t=1; 注意内层 *求每个i数阶乘* 循环的条 件 而不是 j<=100 printf("1!+2!+3!+.+100!=%f”,s)
C 语言程序设计教案 10 三、break 语句与 continue 语句区别 continue 是结束本次循环,进行下一次循环,而不是结束整个循环 过程。对单层循环,break 语句是结束整个循环,转到循环体外;对于 多层循环,则是结束最内层循环。 例 将上例中的 continue;换成 break;执行程序,观察输出结果。 四、循环嵌套的概念及应用 当一个循环结构中包含另一个循环结构时,称为循环的嵌套或多重 循环。在循环嵌套中。 【应用】 例 编程输出乘法“九九表”。 main ( ) { int m,n,k; for (m=1 ;m=20) break; if(b%3= =1) { b+=3; continue; } b-=5; printf(“%d”,b); } } 例 2 计算 1!+2!+3!+…+100!。 main( ) { int i, j double t; double s; s=0; for(i=1; i<=100, i++) /*求和*/ {t=1; for(j=1; j<=i; j++) /*求每个 i 数阶乘*/ t*=j; s+=t; } printf(″1!+2!+3!+…+100!=%f″, s); } 在 TC 环 境中运行 程序 注意: break; 与 continue; 的作用 分析内层 循环与外 层循环的 关系 注意内层 循环的条 件 j<=i 而不是 j<=100