《高级语言程序设计教学课件》第4章循环结构.ppt
《《高级语言程序设计教学课件》第4章循环结构.ppt》由会员分享,可在线阅读,更多相关《《高级语言程序设计教学课件》第4章循环结构.ppt(89页珍藏版)》请在三一办公上搜索。
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个数,输出其中最大数模仿【例3-6】从键盘上随
2、机的输入三个数,输出最大数,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,if(a1max)max=a1;if(a2max)max=a2;if(a3max)max=a3;if(a
3、4max)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,循环结构特点,在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。,15,C语言中,实现循环的语句,1用 while 语句2用 do-whi
4、le 语句3用 for 语句4用 goto 语句和 if 语句构造循环,16,while(表达式)语句,4.2 while循环,while语句一般形式执行流程,17,while循环特点,先判断表达式,后执行循环体说明:循环体有可能一次也不执行(当循环条件不满足)while语句中的表达式可以是任何表达式,常用的是关系表达式和逻辑表达式,只要表达式的值为真(非0)即可继续循环,#include main()int 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=
5、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后面的第一个分号处,while(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=
6、sum+i;i+;printf(%d,sum);,【例4-2】求前n个数的平方和,n;,scanf(%d,n,*i;,printf(n=%d,sum=%d,n,sum);,输入一个整数n:5n=0,sum=55Press any key to continue,输入一个整数n:0n=0,sum=0Press any key to continue,21,【例4-1】从键盘上随机的输入10个数,输出其中最大数。使用while语句完成,#include void main()int x,max,n=1;scanf(%d,while(n10),22,根据上例:输入10个整数,求其中正数的个数及其平均
7、值,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,#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;ch
8、ar ch;ch=getchar();while(ch!=n)letter+;ch=getchar();printf(“有%d个字符n,letter);,P97例5-3从键盘输入一行字符,以n结束,统计输入的字符个数。,25,【例4-3】猴子吃桃子问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少个桃子。,设第n天还剩个桃子Xn,Xn和Xn-1的关系?Xn=Xn-1/2 1Xn-1=(Xn+1)2,26,Xn-1=(Xn+1
9、)2X9=(X10+1)2X8=(X9+1)2X1=(X2+1)2能不能设较少的变量仍然可以求出X1呢?,X1=(X2+1)2X2=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
10、,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,则k为最大公约数STEP3 否则
11、,k-,继续STEP2直到满足条件为止方法2辗转相除法方法3相减法,31,【例4-4】输入两个正整数m和n,求其最大公约数,#include void main()int k,m,n;printf(请输入2个数:);scanf(%d%d,请输入2个数:32 12最大公约数:4Press any key to continue,32,【例4-5】将一个大于1的正整数分解成质因数。例如:输入90,打印出 90=2*3*3*5,题目分析:为了将n分解成质因数,应先找到一个最小的质数k,然后按下述步骤完成:STEP1 如果n=k,则说明分解质因数的过程已经结束,输出即可STEP2 如果n!=k,但n能
12、被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行STEP1STEP3 如果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,所以不可能通过循环控制条件来结束循环体的执行,称为“死循环”。3.为了保证循环正常运行,应该特别注意:循环条件 循环条件的初始状态(初始值)i=1;循
13、环体内部对控制条件的影响 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;int count=0;printf(“Please enter a number:);scanf(“%ld”,39,mai
14、n()int number,count=0;scanf(“%d”,例:输入一个整数,反序输出该数。如输入12345,输出54321。,12345%10=512345/10=1234,1234%10=41234/10=123,123%10=3123/10=12,12%10=212/10=1,1%10=11/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,ite
15、m;int n=1,flag=1;do item=flag*1.0/n;pi=pi+item;n=n+2;flag=-flag;while(fabs(item)1e-5);pi=pi*4;printf(pi=%lfn,pi);,42,#include main()int i,sum=0;scanf(%d,#include main()int i,sum=0;scanf(%d,while和dowhile比较:,1 sum=55,1 sum=55,11 sum=0,11 sum=11,43,for(exp1;exp2;exp3)statement,4.4 for循环,for语句一般形式执行流程,4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级语言程序设计教学课件 高级 语言程序设计 教学 课件 循环 结构
链接地址:https://www.31ppt.com/p-5904935.html