多維數(shù)組
數(shù)組是具有相同數(shù)據(jù)類型且按一定次序排列的一組變量的集合體枝哄。構(gòu)成一個(gè)數(shù)組的所有變量稱為數(shù)組元素,數(shù)組的名字稱為數(shù)組名阻荒,每一個(gè)數(shù)組元素由數(shù)組名及其在數(shù)組中的位置(下標(biāo))確定挠锥。數(shù)組按下標(biāo)個(gè)數(shù)分為:一維數(shù)組,二維數(shù)組和三維數(shù)組等侨赡,二維及以上數(shù)組統(tǒng)稱為多維數(shù)組
在數(shù)組名后有兩對(duì)方括號(hào)的數(shù)組被稱為二維數(shù)組蓖租,同理,數(shù)組名后有n對(duì)方括號(hào)的數(shù)組被稱為n維數(shù)組羊壹,二維及以上的數(shù)組被稱為多維數(shù)組蓖宦。
定義形式:
類型標(biāo)識(shí)符 數(shù)組名[正整型常量表達(dá)式1]【正整型常量表達(dá)式2】…
多維數(shù)組定義的數(shù)組元素個(gè)數(shù)為
正整型常量表達(dá)式1*整型常量表達(dá)式2…
例如
int x[2][3]
是一個(gè)整形二維數(shù)組,共有6個(gè)元素舶掖。它們按順序分別是
X[0][0],x[0][1],x[0][2],x[1][0],x[1][1],x[1][2]
不能用變量表示數(shù)組長度
數(shù)組名后面應(yīng)該用[]
不能用負(fù)數(shù)表示數(shù)組長度
不能用變量表達(dá)式表示數(shù)組長度
多維數(shù)組存儲(chǔ)形式
按x[0][0]
x[0][1]
x[0][2]
x[1][0]
x[1][1]
x[1][2]
依次存放
多維數(shù)組的引用
與一維數(shù)組一樣球昨,不能整體引用一個(gè)多維數(shù)組尔店,只能引用其元素眨攘,引用格式類似一維數(shù)組
二維數(shù)組的引用形式為
數(shù)組名[下標(biāo)1][下標(biāo)2]
三維數(shù)組的引用形式為
數(shù)組名[下標(biāo)1][下標(biāo)2] [下標(biāo)3]
其中主慰,下標(biāo)是正整型常量表達(dá)式,也可以是含變量的正整型表達(dá)式
(特別注意下標(biāo)越界的問題)
多維數(shù)組的初始化
1.把初始值放在一個(gè)大括號(hào)里
例如鲫售,二維數(shù)組x[2][3]用下列方法初始化
Int x[2][3]={1,2,3,4,5,6}
于是
x[0][0] =1
x[0][1] =3
x[0][2] =5
x[1][0]=2
x[1][1]=4
x[1][2]=6
對(duì)第一維的長度可以不指定共螺,對(duì)第二維的長度必須指定
例如
Int a[3][4]
等價(jià)于
Int a[ ][4]
將多維數(shù)組分解成多個(gè)一維數(shù)組
將二維數(shù)組看成一個(gè)特殊的“一維數(shù)組“,它的每一個(gè)元素又是一個(gè)一維數(shù)組
例如
Int a[2][3]
可以把它看成是具有兩個(gè)元素:a[0],a[1]的一維數(shù)組情竹,而a[0],a[1]又都是具有3個(gè)元素的一維數(shù)組藐不,即
a[0] : a[0][0] ? a[0][1] ? ?a[0][2]
a[1] : a[1][0] ? a[1][1] ? ?a[1][2]
因此,對(duì)二維數(shù)組a[2][3]的初始化又可以分解成多個(gè)一維數(shù)組的初始化
int a[2][3] = {{1秦效,3雏蛮,5},{2阱州,4挑秉,6}};
應(yīng)用
求一個(gè)3*4矩陣中數(shù)值最大的元素苔货,以及它所在的行號(hào)和列號(hào)
#includeint main()
{
int i,j;
int row=0; //定義行數(shù)
int column=0; //定義列數(shù)
int max;? //定義最大值
int a[3][4];
for (i=0;i<=2;i++)
for (j=0;j<=3;j++)
scanf ("%d",&a[i][j]); //向矩陣中輸入數(shù)值
max = a[0][0];
for (i=0;i<=2;i++)
for (j=0;j<=3;j++)
if (a[i][j]>max)? //遍歷數(shù)組犀概,選出整個(gè)矩陣中最大數(shù)
{max = a[i][j];
row = i ;
column = j;
}? // 將最大數(shù)所在的行和列得出
printf("max=%d\nrow=%d\ncolumn=%d\n",max,row+1,column+1); //輸出最大值和所在行和列
return 0 ;
}