资源描述:
《c语言 第5讲循环结构程序设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、在解决实际问题时,往往需要对某个处理步骤重复执行。如:烧水过程:开始水温为某一初始值,当温度未达到100度时,需要给水加热,而且要不断重复加热过程,直到水温达到100度为止。计算n个三角形的面积:先输入第一个三角形的三条边,根据条件计算其面积;然后在输入第二个三角形的三条边,根据条件计算其面积;如此反复,直到把n个三角形的面积全部计算完毕为止。第5讲循环结构程序设计5.1while语句5.2do-while语句5.3for语句5.4break、continue和goto语句5.5循环的嵌套5.6复合结构程序举例第5讲循环
2、结构程序设计C语言有while、do-while、和for语句三种循环结构语句。前两个称为条件循环,即根据条件来决定是否继续循环;后一个称为计数循环,即根据设定的执行次数来执行循环。5.1while语句一般形式:while(表达式){语句组}表达式语句真假表达式1.计算表达式语句2.如果表达式的值为非零,执行语句表达式3.返回第一步,重新计算表达式4.如果表达式的值为零,则结束循环如果表达式的值一开始就为0,则语句一次也不会被执行。执行流程:while语句举例问题:求若干个学生的平均成绩,以输入负数成绩为结束算法分析:
3、1.定义变量score存储学生成绩,定义s=0存储累加的成绩,定义n=0统计录入的成绩数目。2.输入第一个学生的score3.若score>=0,执行第4步,否则执行第7步4.n++5.s=s+score6.录入下一个score,并返回第3步7.如果n>0,输出s/n;否则输出没有学生成绩main(){intn=0;floats=0,score;scanf(“%f”,&score);while(score>=0){n++;s=s+score;scanf(“%f”,&score);}if(n>0)printf(“%f”
4、,s/n);elseprintf(“nostudentscore!”);}程序:题目1:任意输入一个自然数,把它反序输出。(如:原数为123,输出321)。分析:此题不确定循环执行的次数,也不涉及一个规律变化的变量,一般用while或do-while来编写。又由于第一次就要判断输入的是否是自然数,通常用while来实现。算法步骤如下:1.定义整型变量a用于存储输入的自然数,定义t初值为0用于存放a的反序数,定义i用于依次存放求出的a的每一位的数值。2.输入一个自然数赋值给变量a3.若a>0,执行第4步,否则执行第7步4.
5、i=a%105.t=t*10+i6.a=a/10,并返回第3步7.输出t程序:#includemain(){longa,i,t=0;scanf(“%ld”,&a);while(a>0){i=a%10;t=t*10+i;a=a/10;}printf(“%ld”,t);}题目2:求两个整数的最大公约数和最小公倍数,例如24与16辗转相除法求最大公约数的具体步骤如下:1.例如m=24,n=16,定义变量r存放m与n的余数2.r=m%n3.判断r是否为0,如果r为0,则n就是m与n的最大公约数,转第6步;否
6、则,转第4步;4.m=n;n=r;5.r=m%n;转到第3步;6.输出最大公约数n;7.最小公倍数=m*n/最大公约数;请试着写出源代码!最大公约数的相关题目:34-2;83-2题目3:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位,例如s=7654321,t则为7531。2-2;4-2;52-2;53-1;54-1;54-2;55-1题目4:求一个无符号数字w的低n-1位。16-3;while(w>10)5.2do—while语句一般形式:do{语句}while(
7、表达式);1.执行语句3.表达式的值为非零,返回第1步4.表达式的值为零,结束循环语句至少被执行一次。表达式语句2.计算表达式执行流程:注意:分号不能丢语句表达式真假main(){intn=0;floats=0,score;do{scanf(“%f”,&score);n++;s=s+score;}while(score>=0);if(n>1)printf(“%f”,(s-score)/(n-1));elseprintf(“nostudentscore!”);}用do-while语句编写统计学生平均成绩的程序:由于do
8、-while语句至少要被执行一次,特别要注意n和s的取值问题!想想这样的一段循环语句的执行结果:i=1;while(i<=100)putchar(‘*’);i++;这个循环永远不会结束,因为循环控制变量i没有在循环体内被改变,i++;不属于循环体。应该改为:i=1;while(i<=100){putchar(‘*’)