(高职)C语言程序设计模块三循环程序设计训练ppt课件.pptx
C语言程序设计模块三循环程序设计训练ppt课件模块三模块三 循环程序设计训练循环程序设计训练能力目标 掌握循环结构的构成及特点; 掌握循环控制变量的运用; 熟练掌握三种基本循环控制语句的使用方法; 熟练掌握一重循环的构建方法,学会构建二重循环; 了解goto语句构成的循环。知识准备知识准备引例任务 计算计算1+2+1+2+100100。算法设计算法设计 把每一个加数看成要投入的硬币数把每一个加数看成要投入的硬币数, ,第一次投第一次投了了1 1枚硬币枚硬币, ,第二次投了第二次投了2 2枚硬币枚硬币,第第100100次投了次投了100100枚硬枚硬币。定义一个变量币。定义一个变量s s用来存放累加和,相当于存放硬币的用来存放累加和,相当于存放硬币的容器,变量容器,变量i i代表加数(也可以看成累加次数),相当于代表加数(也可以看成累加次数),相当于投放的硬币数,见图投放的硬币数,见图3-13-1。s = s + i; /s = s + i; /* * 投入投入i i 枚硬币到枚硬币到s s中中* */ /i = i + 1; /i = i + 1; /* * 计算下次投币数计算下次投币数 * */ /图3-1 引例3-1方法探索示意图#include void main( ) int s=0;/s用来存放累加和,初始值为0int i=1;/i用来存放累加次数,初值为1表示第一次相加 while(i=100) s=s+i;/把数i累加到s中 i+;/累加次数增1,i也是累加数 printf(“s=%dn”,s);输出结果输出结果 s=5050s=5050 程序清单程序清单3.1 while语句 用while语句实现的循环,其结构是当型循环结构,即先判断后执行循环体的循环结构,流程图如下图所示。做中学做中学3-1 3-1 从键盘输入从键盘输入n(n0)n(n0)的值,计算并输出的值,计算并输出“n!n!”的值。的值。算法设计算法设计 程序中需要定义一个变量f用来存放连乘积,连乘积变量的初值通常被置成1,还需要定义一个变量i用来提供1 n个乘数。需要做的就是将这n个乘数循环乘入连乘积中。循环控制变量为i,初值是1;初始化部分:i=1;判断部分:i=n;循环体部分:f=f*i;迭代部分:i+;算法见右图。结束#include void main( ) int i=1,n;/初始化部分 double f=1; printf(请输入变量n的值:n);scanf(%d,&n); while(i=n) /判断部分 f=f*i;/循环体部分 i+;/迭代部分 printf(%d!=%le,n,f);程程序序清清单单程序运行程序运行 请输入变量请输入变量n n的值:的值: 30 30 30!=2.652529e+032 30!=2.652529e+032 知识点while语句语法格式: while(表达式) 语句 其中,“语句”表示while循环结构中不断被重复执行的语句行,称为循环体。若循环体内有多条语句,则用花括弧引起来。while循环结构的功能: 只要循环条件表达式成立(条件表达式为真),则执行循环体,直到表达式不成立(表达式为假)时结束循环。循环体可以为空语句、简单语句或复合语句。注 意 while语句中的表达式一般是关系表达式或逻辑表达式,只要表达式的值为真(非0)就继续循环(执行循环体中的语句); 循环体中应该有使循环趋于结束的语句,否则出现死循环; while语句的循环体允许嵌套while结构,也可以允许多层循环嵌套; while结构中,判断部分若一开始条件就不成立,循环体一次都不执行。3.2 do-while语句 用do-while语句实现的循环,其结构是直到型循环结构。它的特点是先执行循环体,再判断循环条件是否成立,流程图如下图所示。做中学做中学3-2 3-2 用用do-whiledo-while语句完成语句完成【引例任务引例任务】。算法设计算法设计 程序中需要定义一个变量total用来存放累加和,累加和变量的初值通常被置成0,还需要定义一个变量n用来提供加数。需要做的就是将这100个加数循环加入累加和中。循环控制变量为n。初始化部分:n=1;判断部分:n=100;循环体部分:total=total*n;迭代部分:n+;算法见右图。#include void main( ) int n=1,total=0; do total=total+n; n+; while(n=100); printf(total=%d,total);输出结果输出结果 total=5050total=5050 当当n n的初值为的初值为102102时,时,whilewhile后面的后面的“表达式表达式”一开始就为一开始就为“假假”,do whiledo while循环的循环体也被执行一次。循环的循环体也被执行一次。 程序清单程序清单知识点 do-while语句语法格式: do 语句组 while(条件表达式); 执行过程: 先执行循环体语句一次,再判别表达式的值,若为真(非0) ,则继续循环,否则终止循环。 一般用while和do while语句解决同一问题时,若两者的循环体部分一样,它们的结果也一样。 但当while后面的“表达式”一开始就为“假”时,它们的结果就不一样。注 意3.3 for语句 在C语言程序设计中,for循环结构使用最为灵活,不仅适用于循环次数已知的情况,也适用于循环次数不能确定、只能给出循环结束条件的情况,它完全可以替代while语句。做中学做中学3-3 3-3 用用forfor语句实现求语句实现求11001100的累加和。的累加和。算法设计算法设计 循环控制变量为k,s用来存放累加和。初始化部分:k=1;判断部分:k=100;循环体部分:s=s+k;迭代部分:k+;算法见右图。输出输出结果输出结果 total=5050total=5050知识点 for语句语法格式: for(表达式1;表达式2;表达式3) 循环体语句; 执行过程 见右图 说明 3个表达式可以为任何表达式。v 表达式1通常为赋值表达式。v 表达式2作为循环控制条件。v 表达式3通常为赋值表达式。v 表达式1、3一般为简单表达式,也可以为逗号表达式v 3个表达式均可以省略或部分省略。但分号不能省 循环的比较:v 几种循环一般可互相替代。v for语句主要用于给定循环控制变量初值,步长增量以及循环次数确定的循环结构。v 循环次数及控制条件要在循环过程中才能确定的循环可用while或do-while语句。v 循环条件:while、do-while在while条件表达式中指定,for循环在“表达式2”中指定。v 循环变量的初始化:while、do-while在循环之前指定循环变量初值,for循环在“表达式1”中指定。v 判断循环条件的时机:while、for循环先判断循环条件,后执行循环体;do-while循环先执行循环体,后判断循环条件。3.4 循环嵌套 循环嵌套即一个循环体内还包含另一个或几个完整的循环结构,当内嵌的循环中还嵌套其他循环时,成为多层循环。做中学做中学3-4 3-4 打印下列形式的乘积表:打印下列形式的乘积表:11=121=2 22=431=3 32=1 33=991=9 92=18 93=27 99=81算法设计算法设计 使用嵌套的循环结构,外层循环控制变量设为i,用来控制行数,其初值为1,终值为9;内层循环控制变量设为j,用来控制每行打印的内容,初值为1,终值为i。即外层循环控制打印不同的行,内层循环控制打印同一行中的各个算式。算法见下图。#include void main(void) int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d*%d=%2d ,i,j,i*j); printf(n); 输出结果输出结果程程序序清清单单知识点 三种循环结构(for、while和do while)可以互相嵌套。 多重循环的使用与单一循环完全相同,但应特别注意内、外层循环条件的变化。 多重循环嵌套时。循环之间可以并列,但不能交叉。 可用转移语句把流程转出循环体外,但不能从外面转向循环体内。123456while() while() do dowhile(); while();for(;) for(;) while() dowhile(); for(;) while() do for (;) while();3.5 循环退出语句3.5.1 break语句 循环过程中,若满足一定的条件需要退出循环,可用break语句实现。做中学做中学3-5 3-5 求解当求解当n n 多少时多少时1 12 2n n的积刚好大于的积刚好大于10001000。算法设计算法设计 定义变量f(初值为1)存放连乘积,变量n(初值为1)存放乘数,没有具体循环次数。可以用while(f=10000),或do-while(f=10000)语句实现;也可以用for语句实现,但表达式2要空缺,函数体中当f的值大于10000时,用break退出循环。#include void main(void) float f=1; int n; for(n=1;n+) f*=n; if (f1000) break;/积大于1000时,推出循环 printf(n=%d,%d!=%fn,n,n,f);输出结果输出结果 n=7n=7,7!=5040.0000007!=5040.000000程序清单程序清单3.5.2 continue语句 有时在循环的过程中,若满足一定的条件本次循环的剩余语句可以不执行,用来加速循环,可用continue语句实现。做中学做中学3-6 3-6 输出输出11001100之间的不能被之间的不能被5 5整除的数。整除的数。算法设计算法设计 定义变量n当循环控制变量,也是被除数,若n能被5整除,则结束本次循环,立即进入下一次循环。#include void main(void) int n; for (n=1;n=100;n+) if (n%5=0) continue; printf(%5d,n); 输出结果输出结果1 12 3 4 6 7 8 9 11 12 13 14 16 17 18 192 3 4 6 7 8 9 11 12 13 14 16 17 18 19 81 82 83 84 86 87 88 89 91 92 93 94 96 97 98 9981 82 83 84 86 87 88 89 91 92 93 94 96 97 98 99程程序序清清单单3.5.3 goto语句 goto语句为无条件转向语句,它可以控制程序的转向操作。做中学做中学3-7 3-7 反复读取字符。反复读取字符。程程序序清清单单#include void main()char ch,ch1;printf(请输入一串字符:n);output :ch=getchar();/定义了语句标号outputch1=getchar();/读取回车符printf(n你输入的字符为:%cn,ch);if (ch!=n) goto output;程序运行程序运行 请输入一串字符:请输入一串字符:qwertyuiopqwertyuiop你输入的字符为:你输入的字符为:q q你输入的字符为:你输入的字符为:e e你输入的字符为:你输入的字符为:t t你输入的字符为:你输入的字符为:u u你输入的字符为:你输入的字符为:o o说明:该程序通过说明:该程序通过gotogoto和和ifif语句的结合使用,实现了循环结构。语句的结合使用,实现了循环结构。知识点 goto语句语法格式:goto 语句标号; 语句标号是按标识符规定书写的符号,放在某一语句行的前面,标号后加冒号。 语句标号起标识语句的作用,与goto语句配合使用。执行goto语句后,程序将跳转到该标号处并执行其后的语句。 标号必须与goto语句同处于一个函数中,但可以不在一个循环体中。goto语句用途有两种:v 与if语句一起构成循环;v 从循环体内跳到循环体外。不提倡使用goto语句边学边练边学边练当型循环,迭代部分在循环体中while语句do- while语句直到型循环,迭代部分在循环体中for语句当型循环,两分号不能省略循环语句总结归纳总结归纳