《高级语言程序设计教学课件》第4章 循环结构

上传人:xiao****1972 文档编号:71423659 上传时间:2019-01-20 格式:PPT 页数:87 大小:2.69MB
返回 下载 相关 举报
《高级语言程序设计教学课件》第4章 循环结构_第1页
第1页 / 共87页
《高级语言程序设计教学课件》第4章 循环结构_第2页
第2页 / 共87页
《高级语言程序设计教学课件》第4章 循环结构_第3页
第3页 / 共87页
《高级语言程序设计教学课件》第4章 循环结构_第4页
第4页 / 共87页
《高级语言程序设计教学课件》第4章 循环结构_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《《高级语言程序设计教学课件》第4章 循环结构》由会员分享,可在线阅读,更多相关《《高级语言程序设计教学课件》第4章 循环结构(87页珍藏版)》请在金锄头文库上搜索。

1、第四章 循环结构,2,结构化程序设计的三种控制结构,顺序结构 选择结构 循环结构,3, 顺序结构 ,A,B,4,P,A,B,T,F, 选择结构 ,P,A,T,F,5,P=1,A1,P=2,A2,P=n,An,F,T,T,T,F,F,F, 选择结构 ,6, 循环结构 ,P,A,T,F,P,A,T,F,7,学习目标,while语句 dowhile语句 for语句,8,内容,4.1 循环结构概述 4.2 while循环 4.3 do-while循环 4.4 for循环 4.5 循环的嵌套 4.6 循环的中途退出 4.7 算法举例,9,4.1 循环结构概述,【例4-1】从键盘上随机的输入10个数,输出

2、其中最大数 模仿 【例3-6】从键盘上随机的输入三个数,输出最大数,10,【例3-6】从键盘上随机的输入三个数,输出最大数,#include void main(void) int a, b, c, max; printf(“输入三个数: “); scanf(“%d%d%d“, ,11,【例4-1】从键盘上随机的输入10个数,输出其中最大数,#include void main(void) int a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, max; printf(“输入10个数: “); scanf(“%d%d%d%d%d%d%d%d%d%d“, ,12,

3、if(a1max) max=a1; if(a2max) max=a2; if(a3max) max=a3; if(a4max) max=a4; if(a5max) max=a5; if(a6max) max=a6; if(a7max) max=a7; if(a8max) max=a8; if(a9max) max=a9; printf(“%d 是最大数n“, max); ,13,【例4-1】从键盘上随机的输入10个数,输出其中最大数,#include void main() int x, max, n=1; scanf(“%d“, ,用循环程序实现,14,14,循环结构特点,在给定条件成立时,

4、反复执行某程序段,直到条件不成立为止。 给定的条件称为循环条件,反复执行的程序段称为循环体。,15,C语言中,实现循环的语句,1用 while 语句 2用 do-while 语句 3用 for 语句 4用 goto 语句和 if 语句构造循环,16,while(表达式) 语句,4.2 while循环,while语句 一般形式 执行流程,17,while循环特点,先判断表达式,后执行循环体 说明: 循环体有可能一次也不执行(当循环条件不满足) while语句中的表达式可以是任何表达式,常用的是关系表达式和逻辑表达式,只要表达式的值为真(非0)即可继续循环,#include main() int

5、i=1, sum=0; while ( i= 5 ) sum = sum + i; i+; printf(“%d“, sum); ,18,【例】 用while循环求,i sum 0 sum=0+1=1 i+ 2 1 sum=1+2=3 i+ 3 3 sum=3+3=6 i+ 4 6 sum=6+4=10 i+ 5 10 sum=10+5=15 i+ 6 15,1+2+3+100?,100,循环变量初值,循环变量终值,循环变量增值,19,注 意,当循环体包含一个以上的语句时,应该用花括弧括起来,以复合语句形式出现。 如果不加花括弧,while语句的执行范围只到while后面的第一个分号处,whi

6、le(i=100); sum = sum+i; i+; ,while(i=100) sum = sum+i; i+;,while(i=100) sum = sum+i; i+; ,20,main() int i, sum=0; i=1; while(i=100) sum = sum+i; i+; printf(“%d“, sum); ,【例4-2】 求前n个数的平方和, n;,scanf(“%d“, ,n,*i;,printf(“n=%d,sum=%d“, n, sum);,输入一个整数n:5 n=0, sum=55 Press any key to continue,输入一个整数n:0 n=

7、0, sum=0 Press any key to continue,21,【例4-1】从键盘上随机的输入10个数,输出其中最大数。使用while语句完成,#include void main() int x , max, n=1; scanf(“%d“, ,while(n10) ,22,根据上例:输入10个整数,求其中正数的个数及其平均值,main() int a, i=0, n=0, sum=0; float aver; while ( i 0) sum = sum+a; n+; aver=(float)sum/n; printf(“n=%d,aver=%f“,n,aver); ,23,#

8、include void main() int i=1; float jc=1; while(i=10) jc = jc*i; i+; printf(“%10.0fn“, jc); ,#include void main( ) int i=1, n; float jc=1; scanf(“%d“, ,例 求 10!,例 任意输入n, 求 n!,24,#include void main() int letter=0; char ch; ch=getchar(); while(ch!=n) letter+; ch=getchar(); printf(“有%d个字符n“, letter); ,P9

9、7例5-3 从键盘输入一行字符,以n结束,统计输入的字符个数。,25,【例4-3】 猴子吃桃子问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少个桃子。,设第n天还剩个桃子Xn,Xn和Xn-1的关系? Xn = Xn-1/2 1 Xn-1= (Xn + 1)2,26,Xn-1= (Xn + 1)2 X9 = (X10 + 1)2 X8 = (X9 + 1)2 X1 = (X2 + 1)2 能不能设较少的变量仍然可以求出X1呢

10、?,X1 = (X2 + 1)2 X2 = X1,?,27,#include main() int day, x1, x2; day = 9; x2 = 1; while(day 0) x1 = (x2 + 1) * 2; x2 = x1; day-; printf(“The total is %dn“,x1); ,28,附加 条件运算符和条件表达式,一般形式: exp1 ? exp2 : exp3 执行过程 功能:相当于条件语句 条件运算符可嵌套 如 x0?1:x0?-1:0,例 if (ab) printf(“%d“,a); else printf(“%d“,b);,printf(“%d“

11、,ab?a:b);,例 求 a+|b| value = b0?a+b:a-b;,29,结合方向:自右向左 如: x0?1:x0?1:(x0?-1:0 ) exp1、exp2、exp3类型可不同,表达式结果的类型取精度较高的类型,例 x?a:b /x=0,表达式值为b;x0,表达式值为a xy?1:1.5 /xy,值为1.0; x=y ,值为1.5,30,【例4-4】输入两个正整数a和b,求其最大公约数,几个自然数公有的约数,叫做这几个数的公约数。其中最大的就是最大公约数。 方法1定义法 具体步骤: STEP1 从键盘上输入m,n,求k=mn? m:n; STEP2 如果m%k=0且n%k=0,

12、则k为最大公约数 STEP3 否则,k-,继续STEP2直到满足条件为止 方法2辗转相除法 方法3相减法,31,【例4-4】输入两个正整数m和n,求其最大公约数,#include void main() int k, m, n; printf(“请输入2个数: “); scanf(“%d%d“, ,请输入2个数:32 12 最大公约数:4 Press any key to continue,32,【例4-5】 将一个大于1的正整数分解成质因数。例如:输入90,打印出 90=2*3*3*5,题目分析:为了将n分解成质因数,应先找到一个最小的质数k,然后按下述步骤完成: STEP1 如果n=k,则

13、说明分解质因数的过程已经结束,输出即可 STEP2 如果n!=k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行STEP1 STEP3 如果n不能被k整除,则用k+1作为新的k,重复执行STEP1,33,#include void main() int n, k=2; printf(“please input a number:“); scanf(“%d“, ,34,1.while(0) 由于循环的条件表达式恒等于0,循环体永远也不会执行,是编程者的错误。 2.while(1) 由于循环的条件表达式恒等于1,所以不可能通过循环控制条件来结束循环体的执行,称为“死

14、循环”。 3.为了保证循环正常运行,应该特别注意: 循环条件 循环条件的初始状态(初始值) i=1; 循环体内部对控制条件的影响 i+;,While 使用注意,35,do 语句 while(表达式);,4.3 do-while循环,Do-while语句 一般形式 执行流程,36,特点:先执行循环体,后判断表达式 说明: 至少执行一次循环体 dowhile可转化成while结构,37,【例4-6】 从键盘输入一个整数,计算它的位数。例如:输入12345,输出5; 输入-123,输出3, 输入0,输出1。,12345,38,#include void main(void) long number;

15、 int count = 0; printf(“ Please enter a number: “); scanf(“%ld”, ,39,main() int number,count = 0; scanf(“%d”, ,例:输入一个整数,反序输出该数。 如输入12345,输出54321。,12345%10 = 5 12345/10 =1234,1234%10 = 4 1234/10 = 123,123%10 = 3 123/10 = 12,12%10 = 2 12/10 = 1,1%10 = 1 1/10 = 0,40,【例4-7】用格里高利公式求的近似值。要求精确到最后一项的绝对值小于1e-5。,格里高利公式为: 分子 flag:1,-1,1,-1 分母 n: 1,3,5,7,. 项 item = flag/n,41,#include #include void main() double pi=0, item; int n=1, f

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号