资源预览内容
第1页 / 共57页
第2页 / 共57页
第3页 / 共57页
第4页 / 共57页
第5页 / 共57页
第6页 / 共57页
第7页 / 共57页
第8页 / 共57页
第9页 / 共57页
第10页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2019/5/24,1,C语言程序设计与应用教程 (第二版),第5章 循环结构程序设计,2019/5/24,2,学习目标,掌握for语句、while语句和do while语句continue语句和break语句的使用 利用以上语句实现循环结构程序设计,2019/5/24,3,循环结构程序设计,一般来讲,循环结构程序设计要考虑两个方面的问题: (1)循环条件:循环条件是循环结构设计的关键,它决定着循环体执行的次数。循环条件常常由关系表达式和逻辑表达式来表示。 (2)循环体:循环体即是需要重复执行的工作。它可以是一组顺序的语句,也可以是一组具有选择结构的语句,甚至还可以又是一组具有循环结构的语句。,2019/5/24,4,while语句用来实现“当型”循环结构。其一般形式如下: while(表达式)语句 其流程图见图5-1。 执行时先判断表达式, 若表达式为非0值,执 行循环体语句,然后再 判断表达式,直到表达 式为0(“假”)结束循环。,5.1 while语句,2019/5/24,5,5.1 while语句,【例5-1】求 main() int k,sum=0; k=1; while (k=100) sum=sum+k; k+; printf(“%dn“,sum); ,2019/5/24,6,5.1 while语句,【例5-2】从键盘上输入一个整数n,求n!,利用while语句编程实现。 main() int n,k,fac; printf(“nEnter n:“); scanf(“%d“, /*输出计算的结果*/ ,运行情况如下: Enter n:5 n!=120,2019/5/24,7,5.1 while语句,使用while循环结构应注意以下几点: (1)while循环结构的特点是“先判断后执行”,如果表达式的值一开始就为“假”,循环体一次也不执行。 (2)循环体中,如果包含一个以上的语句,则应用花括号括起来,以复合语句的形式出现。,2019/5/24,8,5.1 while语句,使用while循环结构应注意以下几点: (3)循环体内一定要有改变循环继续条件的语句,使得循环趋向于结束,否则循环将无休止的进行下去,即形成“死循环”。 (4)为使循环能够正确开始运行,还要做好循环前的准备工作,分别给循环控制变量和累乘积单元进行初始化,一般用于存放累乘积的单元通常初始值为1,而用于存放累加和的单元通常初始值为0。,2019/5/24,9,5.1 while语句,【例5-3】从键盘上输入20个学生的成绩,求平均分。 main() int n=1; /*循环控制变量赋初值*/ float score,sum=0,aver; printf(“Enter score:n“); while(n=20) /*循环继续的条件*/ scanf(“%f“,score); sum+=score; /*累加求和*/ n+; /*循环控制变量增值*/ aver=sum/20; printf(“average=%5.1fn“,aver); ,2019/5/24,10,5.1 while语句,【例5-4】输入两个数m,n求m,n的最大公约数。 main() int m,n,r; scanf(“%d,%d“, ,运行时输入24,16 输出8,2019/5/24,11,5.1 while语句,【例5-5】输入一批非零整数,以0为结束符,输出其中的最小值。 #include main() int x,min; printf(“input numbers,last one is 0:n“); /*输出提示信息*/ scanf(“%d“, /*输出最小值*/ ,程序的运行情况: input numbers,last one is 0:3 1 6 7 5 9 8 23 67 98 -3 23 0 输出: min=-3,2019/5/24,12,5.2 do-while语句,do-while语句的特点是先执行循环体,然后判断循环条件是否成立。其一般形式为: do 语句 while(表达式); 它是这样执行的:先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(“真”)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。,2019/5/24,13,5.2 do-while语句,【例5-6】用do-while语句求: main() int k,sum=0; k=1; do surn=sum+k; k+; while(k=100); printf(“%d“,sum); ,2019/5/24,14,5.2 do-while语句,对同一个问题可以用while语句处理,也可以用do-while语句处理。do-while语句结构可以转换成while结构。 结论:当while后面的表达式的第一次的值为“真”时,两种循环得到的结果相同。否则,二者结果不相同(指二者具有相同的循环体的情况)。,2019/5/24,15,5.2 do-while语句,【例5-7】 while和do-while循环的比较。 (1)main() (2)main() int sum=0,k; int sum=0,k; scanf(“%d“, ,运行情况如下: 运行情况如下: 1 1 sum=55 sum=55 再运行一次: 再运行一次: 11 11 sum=0 sum=11,2019/5/24,16,5.2 do-while语句,【例5-8】计算 ex=1+x+ + +直到最后一项的绝对值小于10-6时停止计算,x由键盘输入。 #include main() int n=0; float s=0,t=1,x; scanf(“%f“, ,运行时若输入1 输出exp(1.000000)=2.718282,2019/5/24,17,5.3 for语句,C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。for语句的一般形式为: for(表达式1;表达式2;表达式3)语句,2019/5/24,18,5.3 for语句,它的执行过程如下: (1)先求解表达式l。 (2)求解表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下面第(3)步。若为假 (值为0),则结束循环,转到第(5)步。 (3)求解表达式3。 (4)转回上面第(2)步骤继续执行。 (5)循环结束,执行for语句下面的一个语句。,2019/5/24,19,5.3 for语句,说明: (1)for语句的一般形式中的“表达式l”可以省略,此时应在for语句之前给循环变量赋初值。注意省略表达式1时,其后的分号不能省略。 (2)如果表达式2省略,即不判断循环条件,循环无终止地进行下去。也就是认为表达式2始终为真。,2019/5/24,20,5.3 for语句,说明: (3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束。 (4)可以省略表达式1和表达式3,只有表达式2,即只给循环条件。 (5)三个表达式都可省略,如:for(;),2019/5/24,21,5.3 for语句,说明: (6)表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。 (7)表达式一般是关系表达式(如i=100)或逻辑表达式(如ab&xy),但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体。,2019/5/24,22,5.3 for语句,【例5-9】输入10个数求这10个数的和。 main() int sum,x,i; sum=0; for(i=1;i=10;i+) scanf(“%d“, ,运行时输入1 5 7 8 9 67 56 45 34 21 输出 sum=253,2019/5/24,23,5.3 for语句,【例5-10】求非波那契数列。菲波那契数列可以按如下定义: a0=0 a1=1 a2=a0+a1 a3=a1+a2 an=an-2+an-1,2019/5/24,24,5.3 for语句,#include main() int a0,a1,a2,k; a0=0; a1=1; printf(“%6d%6d“,a0,a1); for(k=2;k=20;k+) if(k%5=0)printf(“n“); a2=a0+a1; printf(“%6d“,a2); a0=a1; a1=a2; ,运行: 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765,2019/5/24,25,5.3 for语句,【例5-11】求1+ + 直到最后一项的值小于10-2,如果累加到第20项(即n=19)时,最后一项的值还不小于10-2也不再计算. #include main() float s,t; int n; s=1.0; for(n=1;n=19;n+) t=1.0/(n*(n+1); s+=t; if(t1e-2)break; printf(“n=%d,t=%f,sum=%fn“,n,t,s); ,运行结果: n=10,t=0.009091,sum=1.909091,2019/5/24,26,5.4 几种循环的比较,(1)四种循环都可以用来处理同一问题,一般情况下它们可以互相代替。但一般不提倡用goto型循环。,2019/5/24,27,5.4 几种循环的比较,(2)while和do-while循环,只在while后面指定循环条件,在循环体中应包含使循环趋于结束的语句。for循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中。因此for语句的功能更强,凡用while循环能完成的,用for循环都能实现。,2019/5/24,28,5.4 几种循环的比较,(3)用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成。而for语句可以在表达式1中实现循环变量的初始化。,2019/5/24,29,5.4 几种循环的比较,(4)while循型、do-while循环和for循环,可以用break语句跳出循环,用continue语句结束本次循环。而对用goto语句和if语句构成的循环,不能用break语句和continue语句进行控制。,2019/5/24,30,5.5 循环嵌套,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。各种语言中关于循环的嵌套的概念都是一样的。三种循环(while循环、do-while循环和for循环)可以互相嵌套。 (1)while() while() (2) do do while(); while();,(3)for(;) for(;) (4)while() do while();,2019/5/24,31,5.5 循环嵌套,【例5-12】编程输出以下形式的乘法九九表。 main() int i,j; for(i=1;i=9;i+) /*i作为外循环控制变量控制被乘数变化*/ printf(“n“); for(j=1;j=
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号