数组优质PPT.ppt
《数组优质PPT.ppt》由会员分享,可在线阅读,更多相关《数组优质PPT.ppt(93页珍藏版)》请在冰豆网上搜索。
.5二、一维数组元素的引用二、一维数组元素的引用数组必须先定义,具体引用时(赋值、运算、输出)其元数组必须先定义,具体引用时(赋值、运算、输出)其元素素等同于变量等同于变量。
voidmain(void)inti,a10;
for(i=0;
i=0;
i-)coutait;
cout=3)2113853211.f7f6f5f5f4f3f2f1f0fi=fi-1+fi-2voidmain(void)inti;
intf20=1,1;
for(i=2;
i20;
i+)fi=fi-1+fi-2;
i+)if(i%5=0)cout“n”;
coutfit;
9下面程序的运行结果是:
下面程序的运行结果是:
voidmain(void)inta6,i;
for(i=1;
i3)%5;
coutait;
iai3440-4随机随机a5a4a3a2a1a0输出:
输出:
-404431-42034445310排序算法排序算法用起泡法对用起泡法对6个数排序(由小到大)个数排序(由小到大)将相邻的两个数两两比较,将小的调到前头。
将相邻的两个数两两比较,将小的调到前头。
985420895420859420854920854290854209第一趟第一趟循环循环5次次584209548209542809第二趟第二趟循环循环4次次854209543089543089453089435089430589第三趟第三趟循环循环3次次11430589340589304589304589第四趟第四趟循环循环2次次034589第五趟第五趟循环循环1次次总结:
总结:
n次数次数趟数趟数j(1n-1)54321n-j12345共有共有6个数个数for(j=1;
j=n-1;
j+)for(i=1;
iai+1)t=ai;
ai=ai+1;
ai+1=t;
12一般,元素的序号从一般,元素的序号从0开始,因此,程序可以变动如下:
开始,因此,程序可以变动如下:
for(j=0;
jn-1;
j+)for(i=0;
13二维数组的定义和引用二维数组的定义和引用一、定义方式:
类型说明符类型说明符数组名数组名常量表达式常量表达式常量表达式常量表达式;
inta34;
a00,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a23表明表明a数组由数组由34个个int型元素组成型元素组成定义类型定义类型数组名数组名行数行数列数列数14其行列的序号均其行列的序号均从从0开始开始。
若存放首地址为2000H,则在内存中为:
则在内存中为:
a00a01a02a03a10a11a12a13a20a21a22a232000H2008H2010H2014H201cH2020H2028H202cH即在内存中,多维数组依然是即在内存中,多维数组依然是直线顺序直线顺序排列的,排列的,第第一个元素位于最低地址处。
一个元素位于最低地址处。
a00,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a2315二、二维数组的引用二、二维数组的引用与一维数组一样,二维数与一维数组一样,二维数组必须先定义,其维数必组必须先定义,其维数必须是常量。
具体引用时须是常量。
具体引用时(赋值、运算、输出)其(赋值、运算、输出)其元素等同于变量。
元素等同于变量。
voidmain(void)inta23,i,j;
cout“Input2*3numbersn”;
i2;
i+)/*输入输入*/for(j=0;
jaij;
i+)/*输出输出*/for(j=0;
j3;
j+)coutaijt;
cout“n”;
输入:
123456输出:
_1_2_3_4_5_6定义定义赋值赋值输出输出16三、二维数组的初始化三、二维数组的初始化在定义数组的同时给数组元素赋值。
即在编译阶段在定义数组的同时给数组元素赋值。
即在编译阶段给数组所在的内存赋值。
给数组所在的内存赋值。
1、分行赋值、分行赋值inta34=1,2,3,4,5,6,7,8,9,10,11,12;
2、顺序赋值、顺序赋值inta34=1,2,3,4,5,6,7,8,9,10,11,12;
/依次赋值依次赋值173、部分赋值、部分赋值inta34=1,5,9;
/*a00=1,a10=5,a20=9其余元素为其余元素为0*/inta34=0,1,5;
/*a00=0,a01=1,a10=5*/100050009000010050000000184、分行或全部赋值时,分行或全部赋值时,可以省略第一维,第二维可以省略第一维,第二维不可省。
不可省。
inta4=1,2,5,6,7,8,9,10,11,12;
5、不能给数组整体赋值,只能一个一个地赋值。
、不能给数组整体赋值,只能一个一个地赋值。
6、用、用static定义的数组不赋初值,系统均默认其为定义的数组不赋初值,系统均默认其为0。
staticinta23;
inta23=1,2,3,.,12;
19voidmain(void)inta33,i,j;
i3;
i+)for(j=0;
j+)if(i=2)aij=ai-1ai-1j+1;
elseaij=j;
coutaijt;
i=0a00=0a01=1a02=2i=1a10=0a11=1a12=2a20=a1a10+1=a10+1=1i=2a21=a1a11+1=a11+1=2a22=a1a12+1=a12+1=3输出:
_0_1_2_0_1_2_1_2_320有一个有一个3344的矩阵,要求编程序求出其中值最大的的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
那个元素的值,以及其所在的行号和列号。
先考虑解此问题的思路。
从若干个数中求最大者的先考虑解此问题的思路。
从若干个数中求最大者的方法很多,我们现在采用方法很多,我们现在采用“打擂台打擂台”算法。
如果有算法。
如果有若干人比武,先有一人站在台上,再上去一人与其若干人比武,先有一人站在台上,再上去一人与其交手,败者下台,胜者留台上。
第三个人再上台与交手,败者下台,胜者留台上。
第三个人再上台与在台上者比,同样是败者下台,胜者留台上。
如此在台上者比,同样是败者下台,胜者留台上。
如此比下去直到所有人都上台比过为止。
最后留在台上比下去直到所有人都上台比过为止。
最后留在台上的就是胜者。
的就是胜者。
21程序模拟这个方法,开始时把程序模拟这个方法,开始时把a00a00的的值赋给变量值赋给变量maxmax,maxmax就是开始时的擂主,就是开始时的擂主,然后让下一个元素与它比较,将二者中然后让下一个元素与它比较,将二者中值大者保存在值大者保存在maxmax中,然后再让下一个元中,然后再让下一个元素与新的素与新的maxmax比,直到最后一个元素比完比,直到最后一个元素比完为止。
为止。
maxmax最后的值就是数组所有元素中最后的值就是数组所有元素中的最大值。
的最大值。
22max=a00;
/使使max开始时取开始时取a00的值的值for(i=0;
i=2;
i+)/从第从第0行到第行到第2行行for(j=0;
jmax)/如果某元素大于如果某元素大于maxmax=aij;
/max将取该元素的值将取该元素的值row=i;
/记下该元素的行号记下该元素的行号icolum=j;
/记下该元素的列号记下该元素的列号jcoutrowtcolumtmaxendl;
23将数组行列式互换。
将数组行列式互换。
123456789147258369for(i=0;
j+)t=aij;
aij=aji;
aji=t;
ji;
24打印杨辉三角形打印杨辉三角形11112113311464115101051aij=ai-1j-1+ai-1j25voidmain(void)staticintn2,i,j,k;
i+)nj+=ni+i+1;
coutnktnk+endl;
2126以下程序用于从键盘上输入若干个学生的成绩,统计出平以下程序用于从键盘上输入若干个学生的成绩,统计出平均成绩,并输出低于平均成绩的学生成绩。
均成绩,并输出低于平均成绩的学生成绩。
输入负数结束输入负数结束voidmain()floatx100,sum=0,ave,a;
intn=0,i;
couta;
ave=sum/n;
cout“ave=“aveendl;
_;
i+)if(_)cout“x“i“”xiaa=0sum+=an+inxix;
while(x)ai=x%8;
x=x/8;
i+;
n=i;
for(i=n-1;
i-)coutai;
coutx;
25369132534567836913345678x25y2534343036913345678x25y25343436913255678x3434y34565631voidmain(void)inta6=1,4,7,10,12;
intx;
for(inti=0;
i5;
i+)coutait;
coutendl;
ix)break;
for(intj=i;
j=5;
j+)inty=aj;
aj=x;
x=y;
i6;
25369132534567833voidmain(void)inta6=1,4,7,10,12;
intb6;
i+)if(aix)bi=ai;
elsebreak;
bi=x;
j5;
j+)bj+1=aj;
i+)coutbit;
2578563425for(i=n-1;
i-)从后向前循环从后向前循环35voidmain(void)inta6=2,5,8,10,12;
for(i=4;
i0;
i-)if(aix)ai+1=ai;
ai+1=x;
关键!
从后面开始循环关键!
从后面开始循环从前向后移数从前向后移数不大于退出循环不大于退出循环赋值赋值36用筛选取法求出用筛选取法求出2200之间的所有素数。
之间的所有素数。
筛法:
首先将筛法:
首先将1n个数为数组置初