c++程序设计--二维数组1

文档属性

名称 c++程序设计--二维数组1
格式 rar
文件大小 32.3KB
资源类型 教案
版本资源 通用版
科目 信息技术(信息科技)
更新时间 2008-10-07 19:43:00

图片预览

文档简介

(共16张PPT)
二维数组
二维数组
格式1:
类型 数组名 [常量表达式1] [常量表达式2]
例 float a[4][3]
float a[4]
数组a的分量可用于存储4个学生的语文成绩
若有4个学生,每个学生有语文,数学,英语三科成绩,
90 90 90
80 80 80
70 70 70
60 60 60



90 80 70 60
声明了一个4行3列,共12个元素(分量)的数组。
第一维下标:行标
0~3
0~2
a[0][0]
a[0][1]
a[0][2]
a[1][0]
a[1][1]
a[1][2]
a[2][0]
a[2][1]
a[2][2]
a[3][0]
a[3][1]
a[3][2]
第二维下标:列标
a[0] a[1] a[2] a[3]
用什么样的数据类
型来存储会比较好些?
int a [n][m]
一般的,对二维数组变量:
该说明语句共说明了n×m个整型分量
第一下标x(行标)的编号允许从0- - -
n-1
第二下标y(列标)的编号允许从0- - -
m-1
共n行
使用每个分量时都要有两个下标
a[x][y]
共m列
有4个学生,每个学生有语文,数学,英语三科成绩
例 float a[4][3]
a[0][0]
a[0][1]
a[0][2]
a[1][0]
a[1][1]
a[1][2]
a[2][0]
a[2][1]
a[2][2]
a[3][0]
a[3][1]
a[3][2]
第1个学生



第2个学生
第3个学生
第4个学生
学生编号 1号,2号,3号,4 号
a[1][1]
a[1][2]
a[1][3]
第1个学生
a[2][1]
a[2][2]
a[2][3]
第2个学生
a[3][1]
a[3][2]
a[3][3]
a[4][1]
a[4][2]
a[4][3]
第3个学生
第4个学生
例 float a[ ][ ]
5
4
a[1][0]
a[0][0]
a[4][0]
a[3][0]
a[2][0]
a[0][1]
a[0][2]
a[0][3]



格式2:
类型 数组名 [常量表达式1] [常量表达式2]
二维数组
={ {初值表1} , {初值表2} ……}

int c[2] [4]={ {1,3,5,7},{2,4,6,8} };
c[0][0]
1
c[0][1]
3
c[0][2]
5
c[0][3]
7
c[1][0]
2
c[1][1]
4
c[1][2]
6
c[1][3]
8
c[0][0]c[0][1]
c[0][2]
c[0][3]
c[1][0]
c[1][1]
c[1][2]
c[1][3]
内存空间
int
二维数组在内存空间中存储
(1) int d[ ][3]={{0,1,2},{3,4,5},{6,7,8} };
格式举例
定义了一个元素类型为int的二维数组d,行下标的取值范围没有显式给出,但由于给出了初始化选项,并且含有三个初值表,所以取值范围隐含为0—2。
相当于
int d[ ][3]={{0,1,2),{3,4,5),{6,7,8} };
3
通过下标运算符指明和访问元素,其中对行下标和列下标都要指明才能够唯一确定定一个元素。
数组元素的访问
int a [4] [3];
for( i i< i++)
=0;
4;
for( j j< j++)
=0;
3;
cin>>a[ ][ ]
i
j
控制读多少行
控制读多少列
for( i i< i++)
=0;
=3;
for( j j< j++)
=0;
=2;
cin>>a[ ][ ]
i
j
1.数据读入
行,列下标变量中的任一个下标不仅可以为常量,同样可以为变量或表达式,当然它们都必须为整数类
2.数据输出
for( i i< i++)
=0;
4;
for( j j< j++)
=0;
3;
cout>>a[ ][ ]
i
j
控制总共输出多少行
控制某一行的输出
cout<控制换行
{
}
for( i i< i++)
{
}
=0;
=3;
for( j j< j++)
=0;
=2;
cin>>a[ ][ ]
i
j
cout<练习:将以下两行四列的数据存了二维数组中,并输出
4 5 6
5 6 7
(2)int e[3][4]={ {0},{l,2}} ;
0
0
0
0
1
2
0
0
0
0
0
0
int e[3][4]={ };
将全部的数组元素赋初值为0;
(3) int g[10], h[10][5];
(4) int r[][4];
类型一致的变量可以放在同一个语句中一起说明,不管是一维,还是二维或是普通变量;
该语句定义的二维数组r是错误的,因为它既没有给出第一维下标的取值个数(即行数),又没有给出初始化选项,所以系统无法确定该数组的长度,从而无法为它分配一定大小的存储空间。
格式举例
通常,数学上的矩阵也是用二维数组来存储的。
2 3 4 5
7 8 9 10
12 13 14 15
17 18 19 20
21 22 23 24 25
a[1,0] a[1,1] a[1,2] a[1,3] a[1,4]
a[2,0] a[2,1] a[2,2] a[2,3] a[2,4]
a[3,0] a[3,1] a[3,2] a[3,3] a[3,4]
a[4,0] a[4,1] a[4,2] a[4,3] a[4,4]
a[0,0] a[0,1] a[0,2] a[0,3] a[0,4]
int
a[5] [5]
行标
0--4
列标
0--4
for( i=1;i< =3 ;i++)
for (j=1; j<=2;j++)
a[i][j]=i*j ;
问:数组a中各元素存放的数据是多少?
1
2
2
4
3
6
写一个程序段,计算下面矩阵中各数之和
int a[11][11]
行标:只使用1—10
列标:只使用1—10
1 2 3 ... 10
2 4 6 ... 20
3 6 9 ... 30



10 20 30...100
#include
using namespace std;
int main ()
{ int a[10+1][10+1],i,j,s;
s=0;
for(i=1; i<=10; i++)
for(j=1; j<=10; j++)
{ a[i][j]=i*j;
s=s+a[i][j];
}
cout<system("pause");
return 0;
}
1 2 3 ... 10
2 4 6 ... 20
3 6 9 ... 30



10 20 30...100
编程计算矩阵中对角线右上方所有数之和,该对角线连接左上角和右下角。
1 2 3 ... 10
2 4 6 ... 20
3 6 9 ... 30



10 20 30...100
int a[11][11],i,j,s;
s=0;
for(i=1;i<=10;i++)
for(j=1;j<=10;j++)
if(j>=i)
{ a[i][j]=i*j;
s=s+a[i][j];
}
cout<读入一个3行3列的二维数组,求出每行的和及每列的和
#include
using namespace std;
int main ()
{int a[4][4],i,j,hang[4]={ },lie[4]={ };
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
{ cin>>a[i][j];
hang[i]=hang[i]+a[i][j];
}
for( j=1;j<=3;j++)
for( i=1;i<=3;i++)
lie[j]=lie[j]+a[i][j];
for(i=1;i<=3;i++)
{cout<<"第"<cout<<"第"<}
system("pause");
return 0;
}
输入4名学生数学、物理、化学、英语、语文五门课的考试成绩,求出每名学生的平均分,输出学生成绩单。
同课章节目录