书签 分享 收藏 举报 版权申诉 / 45
上传文档赚钱

类型第4章循环结构程序设计课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:3861206
  • 上传时间:2022-10-19
  • 格式:PPT
  • 页数:45
  • 大小:1MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第4章循环结构程序设计课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    循环 结构 程序设计 课件
    资源描述:

    1、第第4 4章章 循环结构程序设计循环结构程序设计 教学目标:1.领会while,do-while,for三种循环结构的意义;2.会利用循环结构解决一些较复杂的问题;3.能够分析几种不同的程序结构异同。本章结构 问题的提出 while循环 do-while语句构成的循环结构 for语句构成的循环结构 循环的嵌套 典型循环程序 4.1 提出问题循环:将一个语句组连续重复执行若干次高速公路与操场跑道的比较循环结构两大要素:循环体:重复执行的语句组循环控制:控制循环的起止及过程4.2 while 语句功能:非0,执行;为0,停止执行。注意:中通常要有能够使为0的变量一般形式:while()While循

    2、环执行流程:条件?语句1语句210例:利用键盘控制循环程序的执行main()printf(“press any key to end!”);while(!kbhit()printf(“7”);例:1+2+100程序一:main()int i=1,sum=0;while(i=100)sum+=i;i+;printf(”%dn”,sum);程序二:main()int i=0,sum=0;while(i+,i=1)sum+=i;i-;printf(”%dn”,sum);程序四:main()int i=101,sum=0;while(i-)sum+=i;printf(”%dn”,sum);4.3 do

    3、-while 语句 当型循环(while)直到型循环(do-while)一般形式:do while();功能:执行,直到为0do-while循环执行流程:条件?语句1语句210例:判断正整数位数 main()int n,i=0;scanf(%d,&n);doi=i+1;n=n/10;while(n);printf(%d,i);输入:123456输出:6例:100!main()int i=1;double fact=1;do fact=fact*i;i+;while(i=100);printf(”%lfn”,fact);想一想:fact为什么定义为double例:将无符号十进制整数转为二进制程序

    4、一(除2取余法):main()unsigned n,t;printf(”nPlease input a data(1-65535):”);scanf(”%u”,&n);printf(”n10:%un 2:tt”,n);do t=n%2;n=n/2;printf(“%dbb”,t);while(n!=0);程序2:#include math.hmain()unsigned n,temp;int i=0;printf(nPlease input a data(1-65535):);scanf(%u,&n);printf(n10:%un2:,n);dotemp=pow(2,i+);while(tem

    5、pn)i=i-2;else i=i-1;dotemp=pow(2,i-);if(n=temp)printf(1);n=n-temp;else printf(0);while(i=0);将一个不超过5位的二进制数转为10进制#includemain()int n,i,j=0,num=0;printf(Enter a data(00000_11111):);scanf(%d,&n);doi=n%10;n=n/10;num=num+i*pow(2,j+);while(n);printf(%d,num);输入:1100输出:124.4 for语句For循环是一种结构紧凑的循环一般形式:for(;)如:

    6、for(i=1;i=100;i+)sum+=I;for循环执行过程:循环变量初值循环体图4-4 for循环控制流程条件?循环变量值调整10例 1+2+100main()int i,sum=0;for(i=1;i=100;i+)sum+=i;printf(”sum=%dn”,sum);Sum=5050例 控制喇叭鸣响6次。程序如下:main()int i;for(i=1;i=6;i+)printf(”7”);例 模拟消防警报#include#include#include#includemain()int a=20;while(!kbhit()/*按下任意键退出*/for(;a=20;a-)so

    7、und(a);delay(100);例 利用空循环实现延时。main()int m;long n;for(m=10;m=0;m-)for(n=0;n=82000000;n+);/*延时*/clrscr();/*清除文本窗口*/gotoxy(40,12);/*定位在屏幕12行40列*/printf(“a%db,m);结果:0 109 87 6 5 4 3 2 1例 输入全班30位同学某门课的成绩,计算平均成绩,并找出最高分和最低分。main()int i,score,max=0,min=100;float sum=0;for(i=1;imax)max=score;if(scoremin)min=

    8、score;printf(average=%-7.2fn,sum/30);printf(max=%d min=%dn,max,min);例 用近似公式计算自然对数的底(e=1+1/1!+1/2!+1/n!)。main()int n;double e,p;e=p=1.0;for(n=1;n=1;i-)pi=pi*(double)i/(2*i+1)+2;printf(%lfn,pi);运行结果:3.14159265358984.5 循环的嵌套循环体中又出现循环结构时,即为循环的嵌套。正确的嵌套形式:while(e)do while(e1);for(e1;e2;e3)for(b1;b2;b3)for

    9、(e1;e2;e3)while(b)do for(e1;e2;e3)while(e);例 1!+2!+6!main()int i,j,n;long fact,sum=0;for(i=1;i=6;i+)fact=1;for(j=1;j=i;j+)fact=fact*j;sum=sum+fact;printf(%ldn,sum);例 打印由*构成的三角形 main()int i,j,k;for(i=1;i=4;i+)/*控制打印行数*/for(j=1;j=4-i;j+)/*控制每行起始位置*/printf();for(k=1;k=2*i-1;k+)/*控制每行的星数*/printf(*);prin

    10、tf(n);/*换到下一行*/例 打印100到算术题#includemain()int i,a,b;for(i=1;i100|b100|a+b100);printf(%d+%d=t,a,b);4.6 break语句和continue语句4.6.1 break语句一般形式:break;功能:用于退出while、do-while、for构成的循环结构,即提前结束循环,执行循环结构下面的语句。注:通常出现在if结构中例 求最大公约数和最小公倍数。/*求最大公约数*/main()int a,b,i,t;printf(Enter a,b:);scanf(%d%d,&a,&b);if(a=1;i-)if(

    11、a%i=0&b%i=0)break;printf(%d,i);/*求最小公倍数*/main()int a,b,i,t;printf(Enter a,b:);scanf(%d%d,&a,&b);if(ab)t=a;a=b;b=t;for(i=a;i=a*b;i+)if(i%a=0&i%b=0)break;printf(%d,i);printf(%d%d,i,a*b/i);辗转相除法:main()int a,b,r,t;printf(“Enter a,b:”);scanf(“%d,%d”,&a,&b);if(ab)t=a;a=b;b=t;r=a%b;while(r!=0)a=b;b=r;r=a%b

    12、;printf(“%d”,b);main()i n t a,b,r,t;printf(“Enter a,b:”);scanf(“%d,%d”,&a,&b);if(ab)t=a;a=b;b=t;r=a-b;while(r!=0)a=b;b=r;r=a-b;printf(“%d”,b);辗转相减法:a=b;b=r;r=a%b;a=b;b=r;r=a-b;例 百鸡问题(穷举法的一个最好例证)main()int x,y,z;for(x=0;x=33;x+)for(y=0;y=50;y+)for(z=0;z100)break;if(x+y+z=100&3*x+2*y+z/3=100)printf(n%2

    13、d%2d%2d,x,y,z);4.6.2 continue语句 一般形式:continue;功能:跳过本次循环后面尚未执行的语句,提前结束本次循环,并继续循环流程的下一步。本语句仅用于由while、do-while、for构成的循环中。注:continnue 通常不单独使用,而是用作if语句中的嵌套语句。例 九宫格问题main()int a11,a12,a13,a21,a22,a23,a31,a32,a33;for(a11=1;a11=9;a11+)for(a12=1;a12=9;a12+)for(a13=1;a13=9;a13+)for(a21=1;a21=9;a21+)for(a22=1;

    14、a22=9;a22+)for(a23=1;a23=9;a23+)for(a31=1;a31=9;a31+)for(a32=1;a32=9;a32+)for(a33=1;a33=9;a33+)if(a11+a12+a13=15&a21+a22+a23=15&a31+a32+a33=15&a11+a21+a31=15&a12+a22+a32=15&a13+a23+a33=15&a11+a22+a33=15&a13+a22+a31=15)printf(n%d%d%dt%d%d%dt%d%d%d,a11,a12,a13,a21,a22,a23,a31,a32,a33);main()int a11,a1

    15、2,a13,a21,a22,a23,a31,a32,a33;for(a11=1;a11=9;a11+)for(a12=1;a12=9;a12+)if(a12=a11)continue;for(a13=1;a13=9;a13+)if(a13=a12|a13=a11|a11+a12+a13!=15)continue;for(a21=1;a21=9;a21+)if(a21=a11|a21=a12|a21=a13)continue;for(a22=1;a22=9;a22+)for(a23=1;a23=9;a23+)if(a23=a22|a23=21|a21+a22+a23!=15)continue;f

    16、or(a31=1;a31=9;a31+)if(a31=a21)continue;for(a32=1;a32=9;a32+)if(a32=a22)continue;for(a33=1;a33=9;a33+)if(a31+a32+a33!=15)continue;if(a11+a21+a31!=15)continue;if(a12+a22+a32!=15)continue;if(a11+a22+a33!=15)continue;if(a13+a22+a31!=15)continue;printf(n%d%d%dn%d%d%dn%d%d%d,a11,a12,a13,a21,a22,a23,a31,a

    17、32,a33);例 输出1200之间能被6 整除的素数。每行10个数据。main()int n,c=0;for(n=1;n=200;n+)if(n%6!=0)continue;printf(“%d”,n);printf(“%s”,c+%10=0?”n”:”);4.7 三种循环的比较while 简明易懂,但需在循环体中作调整。do-while类似while,但需循环体至少执行一次。for结构清晰,不容易发生错误。4.8 典型程序main()long f1,f2,f3,i;f1=f2=1;printf(n%10d%10ld%10ld,1,f1,f2);for(i=3;i=36;i+)printf(

    18、%10ld,f3=f1+f2);if(i%5=0)printf(n%10ld,i/5+1);f1=f2;f2=f3;求Fibonacci数列的前36项,并以每行5项的方式输出。上述问题还可以采用另一种思路:(1)先数列前两项的值赋给f1和f2,即:f1=1,f2=1;(2)输出f1和f2两项的值;(3)将f1与f2之和赋给 f1,然后,新的f1值与原来的f2值之和赋给f2;(4)重复(2)、(3),直到获得最终结果 main()long f1,f2,f3,i;f1=f2=1;for(i=1;i=18;i+)if(i-1)%2=0)printf(n%10d,(i+1)/2);printf(%12

    19、ld%12ld,f1,f2);f1=f1+f2;/*一次完成两项递推*/f2=f2+f1;例 求ex的近似值。已知:ex=1+x+x2/2!+x3/3!xn/n!+#include math.h main()int m,n;float x,sum,t;sum=1.0;t=1.0;printf(“nPlease Input m,x:”);scanf(%d,%f,&m,&x);/*输入项数m和x*/for(n=1;n0.001);/*直到f(x)的绝对值小于0.001*/printf(%f%f%f,y,f0,fabs(f0);例 绘制sin(x)曲线。#include math.h#include

    20、graphics.h /*绘图函数需包含的头文件*/#define PI 3.1415926main()int i,j,driver,mode;double x,y;driver=VGA;mode=VGAHI;initgraph(&driver,&mode,);/*确定显示器为VGA,显示模式为VGAHI*/clrscr();setbkcolor(BLUE);setcolor(RED);/*设置背景色为BLUE,前景色为RED*/line(100,200,600,200);line(200,50,200,350);/*下面绘制正弦曲线*/for(i=0;i=360;i+)x=3.141592/

    21、180*i;/*角度转为弧度*/y=100*sin(x);/*正弦值放大100倍*/putpixel(i+200,-y+200,5);/*绘制一个像素点*/在(200,50)至(200,350)之间绘一条线在(100,200)至(600,200)之间绘一条线小结1.一般来说,用某种循环语句写的程序段,也能用另外两种循环语句实现。while语句和for语句属于“当型”循环,即“先判断,后执行”;而do_while语句属于“直到型”循环,即“先执行,后判断”。在实际应用中,for语句多用于循环次数明确的问题,而无法确定循环次数的问题多采用while语句或do_while语句。2.当循环体中又出现了循环结构时,就形成了循环结构的嵌套。通过循环的嵌套可以实现对重复的重复。3.出现在循环体中的break语句和continue语句能改变循环的执行流程。它们的区别在于:break语句能终止整个循环语句的执行;而continue语句只能结束本次循环,并开始下次循环。break语句还能出现在switch语句中;而continue语句只能出现在循环语句中。祝同学们学习进步!祝同学们学业有成!

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第4章循环结构程序设计课件.ppt
    链接地址:https://www.163wenku.com/p-3861206.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库