1、单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,计算机程序设计基础,第四讲 数组,1,第1页,三、数组,中秋佳节,有贵客来到草原,主人要从羊群中选一只肥羊宴请宾客,当然要选最重者。这么就要统计每只羊重量,假如有成千上万只羊,不可能用普通变量来统计。能够用带有下标变量,也就是这里要讲,数组,。,问题:哪只羊最重?,2,第2页,我们先看例子:用键盘输入10只羊重量存放到一个名为,sheep,数组中,#include,void main(),/,主函数,float sheep10,;,/数组,有10个浮点类型元素,,/用于存10只羊每一只重量,float ma
2、x;,/,浮点类型变量,存放最肥羊重量,int i,k;,/,整型变量,,i,用于计数循环,,k,用于统计最肥羊号,max=0.0;,/,赋初值0,for(i=0;i10;i=i+1),/,计数循环,/,循环,开始,printf(“,请输入羊重量,sheep%d=”,i);,/,提醒用,scanf(“%f”,/,输入第,i,只羊重量,if(max 1e-6);,/,当,c,绝对值大于10-6次方时,继续/执行循环体,不然退出,pi=4*pi;,/,得到最终止果,printf(“pi=%fn”,pi);,/,输出,pi,值,printf(“sum=%dn”,sum);,/,输出总项数,参考程序以
3、下:,16,第16页,运行结果,pi=3.141594,sum=500001,提问,:,这种循环当表示式值,永远为真,时,,会怎样?,答:会组成,死循环,,即无休止地执行循环体,请试验:,1.将,b,定义为,int,型看看执行结果并分析为何,2.将1,e-6,变为1,e-7,或1,e-4,看看结果,17,第17页,下面还要介绍另一个循环,“,当循环,”,普通形式:,while(,表示式),语句块;(循环体),18,第18页,分析:假定有,x,y,且,xy,,设最小公倍数为,z,1.z,一定会=,x,2.z=kx,k=1,2,3.z,一定会被,y,整除,用两个最简单数试一下就能够找到算法.,比如
4、x=5,y=3.,举例:求两个整数最小公倍数,19,第19页,第一步,z,=,x,z%y!=0,不能整除,=5,5%3!=0,第二步,z=z+x,不能整除,=10,10%3!=0,第三步,z=z+x,=15,15%3=0能整除,找到了,z,15,就是5和3最小公倍数,20,第20页,#include,#include,void main(),/,主函数,int x,y,z,w;,/整型变量,scanf(“%d%d”,/,键盘输入两整数,x,y,if(x=ai+1,,位置不动;,假如,ai ai+1,,位置交换,即,p=ai;ai=ai+1;ai+1=p;,步骤3结束后,an-j+1,中数为最
5、小数,步骤4:让,j=j+1;,只要,j!=n,就返回步骤3,将,an-j+1,值排好。当,j=n,时执行步骤5,步骤5:输出排序结果,冒泡排序算法设计:,28,第28页,#include,void main(),/,主函数,int i,j,p,a7;,/整型变量,for(i=1;i=6;i=i+1),/,键入6个数,放入,a,数组中,printf(“,请输入待排序数,a%d=”,i);,/,提醒,scanf(“%d”,/,用键盘输入整数赋给,ai,|,for(j=1;j=5;j=j+1),/,冒泡排序,外层循环,for(i=1;i=6-j;i=i+1),/,内层循环,/,循环体,开始,if(ai ai+1),/,假如,ai ai+1,p=ai,;,/让,ai,与,ai+1,交换,ai=ai+1;,ai+1=p;,/,循环体结束,for(i=1;i=6;i=i+1),/,输出排序结果,printf(“%dn”,ai);,/,格式输出,ai,参考程序以下:,29,第29页,结 束,30,第30页,