C++数组课件.ppt
《C++数组课件.ppt》由会员分享,可在线阅读,更多相关《C++数组课件.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本章要点1、数组的定义格式2、数组元素引用的格式3、数组的赋值与初始化4、数组与函数5、字符数组6、字符串数组数组是由一组具有相同数据类型的元素组成的集合。数组的类型就是这组元素的数据类型。构成数组的这组元素在内存中占用一组连续的存储单元。可以用一个统一的数组名标识这一组数据,而用下标来指明数组中各元素的序号。一维数组的定义语法格式:类型类型 数组名数组名常量表达式常量表达式; 如: char a5; int b10; const int size=10; int csize;注意注意:在定义数组时,不能用变量来描述数组定义中的元素个数。例如,下面的定义方式是不合法的: int n; cinn
2、; int bn; 数组名是代表数组元素首地址的符号常量例 对于 char a10a的内容是一个地址,也就是a0的地址;在定义a10之后a为一个表示地址的常量。一维数组的存储 用数组名加下标值就可以访问数组中对应的某个元素。下标值从0开始,因此对于一个具有n个元素的一维数组来说,它的下标值是0 n-1。 数组元素在内存中是顺序存储的。对于一维数组,就是简单地按下标顺序存储。 如:int b5; b0b1 b2b3b4一维数组的初始化语法格式为:类型类型 数组名数组名 数组范围数组范围 =值值1,值,值2,值,值n;例如:char a5=a,b,c,d,e;或:char a =a,b,c,d,e
3、; int c5=1,2;当数组长度与初始化元素的个数不相等时,数组长度不能省去不写,如上例不能写为:int c =1,2;字符数组初始化: char d6= h , e , l , l , o , 0 ; char d6=”hello”; 三种等价 char d6=”hello”;数组元素的赋值由于数组名是常量,数组元素是变量,所以对数组的赋值只能针对数组元素,并且必须逐一赋值。例 int mydata5; mydata0=3; mydata1=78; mydata2=54; mydata3=90; mydata4=6;mydata=3,78,54,90,6是错误的!若要在数组之间进行赋值,
4、也只能逐一地赋值。 for (i=0;i数组名;数组名; 或 cin数组名数组名下标下标;如:对一个大小为5的字符型数组a赋值,可以用下列两种方式:char a5; cina; /一般只针对字符数组 或char a5;int i;for (i=0;iai;数组元素的赋值数组元素的引用引用形式为:数组名数组名下标下标 下标可以是整常数或整型表达式。例如a2+1、ai+j等(i和j为整型变量)。例如:a2=10; /将10赋给数组中的a2元素。a5=a2; /将a2元素的值赋给a5元素couta5; /打印a5元素的值数组越界 在给数组元素赋值或对数组元素进行引用时,一定要注意下标的值不要超过数组
5、的范围,否则会产生数组越界问题。因为当数组下标越界时,编译器并不认为它是一个错误,但这往往会带来非常严重的后果。 例如:定义了一个整型数组a:int a10; 数组a的合法下标为09。如果程序要求给a10赋值,将可能导致程序出错,甚至系统崩溃。 可以使用下式预防越界:可以使用下式预防越界: sizeof(a)/sizeof(int)一维数组例#include using namespace std;void showVal ( int num );int main ( ) int testArr 5 = 5, 10, 15, 20, 25 ; for ( int ct = 0; ct 5; c
6、t+ ) showVal ( testArr ct ); return 0;void showVal ( int num ) cout num “ “;一维数组例#include using namespace std;int main( ) int i,a10; for (i=0;i=0;i-) coutai ; coutendl; return 0;一维数组例#include using namespace std; int main() int age5; /数组声明数组声明 int sum=0; for(int i=0;i5;i+) coutagei; /写数组元素写数组元素 sum+
7、=agei; coutThe average is:sum/5.0endl; return 0; 一维数组例#include using namespace std;int main() int age=18,20,17,21,19; /数组初始化数组初始化 int sum=0; for(int i=0;i5;i+) sum+=agei; coutThe average is:sum/5.0endl; return 0;一维数组例编写程序,用冒泡法对编写程序,用冒泡法对10个数排序个数排序(按由小到大顺序按由小到大顺序)。一维数组例#include using namespace std;in
8、t main( ) int a11; int i,j,t; coutinput 10 numbers :endl; for (i=1;iai; coutendl; for (j=1;j=9;j+) /共进行共进行9趟比较趟比较 for(i=1;iai+1) /如果前面的数大于后面的数如果前面的数大于后面的数 t=ai;ai=ai+1;ai+1=t; coutthe sorted numbers :endl; for(i=1;i11;i+) /输出输出10个数个数 coutai ; coutendl; return 0;#includeusing namespace std;int main()
9、int n,a10000,i,j;cinn;for(i=0;iai;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(aiaj) swap(ai,aj);for(i=0;in;i+)coutai ;80.简单的排序#includeusing namespace std;int main()int a,b,c,d,e=1;cina;int na;for(c=0;cnc; cinb;for(c=0;cb)e=e+1; coute; return 0; 100.成绩排名#includeusing namespace std;int main() int a10000,n,i=0,
10、j; cinn; while(n0) ai=n%2; i+; n=n/2; for(j=i-1;j=0;j-) coutaj;86.十进制数转换为二进制数二维数组的定义语法格式:类型类型 数组名数组名常量表达式常量表达式1常量表达式常量表达式2;如: int a23; 数组a各元素如下: a00 a01 a02 a10 a11 a12二维数组中每个元素都是用下列方式标识:数组名数组名行下标行下标列下标列下标对于二维数组,可以把它看成是由多个一维数组构成。如:int a23;就可以看成是由两个形如int a3;的一维数组构成的。 二维数组初始化(1)分别对各元素赋值,每一行的初始值用一对花括号括
11、起来。例如:int a23=1,2,3,4,5,6;(2)将各初始值全部连续地写在一个花括号内,在程序编译时会按内存中排列的顺序将各初始值分别赋给数组元素。例如int a23=1,2,3,4,5,6;(3)只对数组的部分元素赋值。例如:int a23=1,2,3,4;(4)可以在分行赋初值时,只对该行中一部分元素赋初值,例如:static int a23=1,2,1;省略第一维的大小若在定义数组时给出了全部数组元素的初值,则数组的第一维下标可以省略,但第二维下标不能省略。下面两种定义方式等价:static int a23=1,2,3,4,5,6;static int a 3=1,2,3,4,5
12、,6; static int a2 =1,2,3,4,5,6; /错误写法在分行定义时,也可以只对部分元素赋初值而省略第一维的下标。例如:int a 4=1,2,3,4,5; 等价于 int a34=1,2,0,0,0,0,0,0,3,4,5,0 ;二维数组例#include using namespace std; int main() float disks24; int row, col; disks00 = 2.39; / Row 1, column 1 disks01 = 2.75; / Row 1, column 2 disks02 = 3.29; / Row 1, column
13、3 disks03 = 3.59; / Row 1, column 4 disks10 = 1.75; / Row 2, column 1二维数组例 disks11 = 2.19; / Row 2, column 2 disks12 = 2.69; / Row 2, column 3 disks13 = 2.95; / Row 2, column 4 / Print for (row=0; row2; row+) for (col=0; col4; col+) cout “$” disksrowcol “n”; return 0;二维数组例#include / 二维矩阵的转置二维矩阵的转置us
14、ing namespace std;int main( ) int a23=1,2,3,4,5,6; int b32,i,j; coutarray a:endl; for (i=0;i=1;i+) for (j=0;j=2;j+) bji=aij; coutarray b:endl; for (i=0;i=2;i+) for(j=0;j=1;j+) coutbij ; coutendl; return 0;二维数组例#include using namespace std;int main( ) int i,j,row=0,colum=0,max; int a34=5,12,23,56,19,
15、28,37,46,-12,-34,6,8; max=a00; /使使max开始时取开始时取a00的值的值 for (i=0;i=2;i+) /从第从第0行行第第2行行 for (j=0;jmax) /如果某元素大于如果某元素大于max max=aij; /max将取该元素的值将取该元素的值 row=i; /记下该元素的行号记下该元素的行号i colum=j; /记下该元素的列号记下该元素的列号j coutmax=max,row=row,colum=columendl; return 0; 例例 :读入下表中值到数组,分别求各行、各列及表中所有数之和读入下表中值到数组,分别求各行、各列及表中所有
16、数之和12 4 615 7 9 8 23 3 2 5 1712 4 6 2215 7 9 31 8 23 3 34 2 5 17 2437 39 35 111#include int main() int x54,i,j; for(i=0;i4;i+) for(j=0;jxij; for(i=0;i3;i+) x4i=0; for(j=0;j5;j+) xj3=0; for(i=0;i4;i+) for(j=0;j3;j+) xi3+=xij; x4j+=xij; x43+=xij; for(i=0;i5;i+) for(j=0;j4;j+) cout“ ”xij; coutendl; ret
17、urn 0;多维数组类型类型 数组名数组名常量表达式常量表达式1常量表达式常量表达式2常量表达式常量表达式n;例如:定义一个整型三维数组:int a234;int a234=1,2,3,4,5,6,7,8,9,10,11,12, 13,14,15,16,17,18,19,20,21,22,23,24;或:int a234=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, 17,18,19,20,21,22,23,24;或int a 34=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24;i
18、nt b 32=1,2,3,5,0,7,8,10;int b232=1,2,3,0,5,0,0,7,8,0,10,0;等价数组和函数1. 数组元素作为函数的参数数组元素作为函数的参数用法与普通变量作参数相同。将数组元素的值传送给形参进行函数体调用,函数调用完返回后,数组元素的值不变。这种传送方式是“值传送”方式。例#include using namespace std;int main( ) int max_value(int x,int max); /函数声明函数声明 int i,j,row=0,colum=0,max; int a34=5,12,23,56,19,28,37,46,-12
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 数组 课件
限制150内