《数组及其应用》PPT课件.ppt
第第6章章 数组及其应用数组及其应用6.1 数组的概念数组的概念 下标变量的集合。一维数组、二维数组、和多维数组以及字符串数组及在计算机内存中排列方法。6.2 数组的定义及初始化数组的定义及初始化(一维和多维一维和多维)static int a10,b200=1,2,3,4,5;static float d56=1,2,3,4,5,0,2,3;int k333;说明:1.static 定义为静态数组,地址固定;auto 定义动态数组,不用就撤消。2.static 可以初始化数组,不给数值时,元素自动置0。3.数组名的起法与变量名字起法相同。4.数组名字与变量名字不能相同。5.数组元素从0 开始。(A0)6.数组又称做数组变量。7.数组中的一个单元又称做一个元素,一个元素可以放一个数据。8.注意定义数组时的下标和使用数组时下标的区别。9.引用数组或给数组赋值时,下标不能越界使用。否则可能引起计算机系统崩溃。10.不用static 定义数组时,自动为auto(局部)11.无论是局部变量还是局部数组变量,注意未初始化时,其中的值是任意的。6.3 数组的输入(赋值)、输出和应用数组的输入(赋值)、输出和应用6.3.1 一维数组的应用例:将一维数组反序放入另一个一维数组。#include void main()int a10,b10;int i;for(i=0;i10;i+)ai=i*2-1;b10-i-1=ai;for(i=0;i10;i+)coutAi=ai;cout Bi=biendl;例:将10个数字反序输出。#include void main()int a10=1,2,3,4,5,6,7,8,9,10;int i;for(i=0;i10;i+)couta9-iendl;例:将某一企业12个月的月产值、年总产值和年均产值放入一个一维数组。#include void main()int a15=0,1,2,3,4,5,6,7,8,9,10,11,12,0;int i;for(i=1;i13;i+)a13+=ai;a14=a13/12;for(i=1;i15;i+)coutaiendl;例:求数列的前20项:0,1,1,2,4,7,#include void main()static int i,a20=0,1;for(i=2;i20;i+)ai=ai-1+ai-2;a14=a13/12;for(i=0;i15;i+)coutaiendl;例:从n个评委的打分中找最高分。#include#define N 10void main()int aN,i,max=0;for(i=0;iai;for(i=0;iN;i+)if(maxai)max=ai;for(i=1;iN;i+)coutaiendl;coutmax;例:将n个数字排序,并输出排序后的结果和排序前的数值。例:统计n个1 到 m-1 中每个数出现的个数。#include#include stdlib.h#include iomanip.h#define M 10void main()static int n,aM,i,k;cinn;srand(time(NULL);for(i=0;in;i+)k=rand()/32787.*M;ak=ak+1;for(i=0;iM;i+)coutaistr2,其值为正整数 str1=str2,其值为0 str1str2,其值为负整数 strlen(str)测串 str长度 strlwr(str)将大写字母转换为小写字母 strupr(str)将小写字母转换为大写字母说明:1.其中str为字符串或者字符数组.2.字符串的比较规则 相同为相等 (“ok”=“ok”)部分相同,长串为大 (“work”Beijing”6.4.4 字符串数组的应用字符串数组的应用例:将存入字符数组的英文单词输出。例:将 n个国家名字(单词)排序#include iostream.h#include string.hvoid main()int k,j;char name20=iraq,iran,india,nepal,norway,peru,poland,spain,sudan,tunis;char d20;for(k=0;k9;k+)for(j=k+1;j0)strcpy(d,namej);strcpy(namej,namek);strcpy(namek,d);for(k=0;k10;k+)coutnameka;for(k=0;ak;k+)if(ak=l|ak=L)s+=1;coutaendl;coutsendl;6.5 数组元素作为函数参数数组元素作为函数参数例:求5以内的平方,存于一维数组#include iostream.h#include iomanip.hvoid main()int a52,k;int s(int x);for(k=0;k5;k+)ak0=k+1;ak1=s(ak0);coutak0setw(8)ak1endl;int s(int x)return(x*x);6.6 数组作为函数的参数数组作为函数的参数例:计算四个季度产值和(结果放在每行的第5元素)。#include void RowSum(int a 5,int nrow)for(int i=0;i nrow;i+)for(int j=0;j 4;j+)ai4+=aij;void main(void)static int Table35=1,2,3,4,2,3,4,5,3,4,5,6;/调用子函数,计算各行和RowSum(Table,3);/输出数组元素for(int i=0;i 3;i+)for(int j=0;j 5;j+)cout Tableij ;cout endl;说明:1.整个数组作为实参时,只写数组名即可 如/A行2.函数定义中必须给出列下标,行下标可以不给出。3.函数中使用数组仍要进行类型说明。4.数组作为实参和形参,有一方改变了其元素值,双方的数组的元素值均改变。5.使用数组做实参和形参,可以函数程序中带回多个值。