?? codetc25b.dat
字號(hào):
----
二維數(shù)組的引用
二維數(shù)組的元素的表示形式為: 數(shù)組名[下標(biāo)][下標(biāo)]
如a[2][3].下標(biāo)可以是整型表達(dá)式,如a[2-1][2*2-1].不要寫(xiě)成a[2,3],a[2-1,2*2-1] 的形式.
數(shù)組元素可以出現(xiàn)在表達(dá)式中,也可以被賦值,例如: b[1][2]=a[2][3]/2
在使用數(shù)組元素時(shí),應(yīng)該注意下標(biāo)值應(yīng)在已定義的數(shù)組大小的范圍內(nèi).常出現(xiàn)的錯(cuò)誤是
int a[3][4];
.
.
.
a[3][4]=3;
定義a為3*4的數(shù)組,它可用的行下標(biāo)值最大為2,列下標(biāo)值最大為3,用a[3][4]超過(guò)了數(shù) 組的范圍.請(qǐng)讀者嚴(yán)格區(qū)分在 定義數(shù)組時(shí)用的a[3][4]和引用元素時(shí)的a[3][4]的區(qū)別.前者a[3][4]用來(lái)定義數(shù)組的維數(shù)和各維的大小,后者a[3][4] 中的3和4是下標(biāo)值,a[3][4]代表某一個(gè)元素.
----
二維數(shù)組的初始化
可以用下面的方法對(duì)二維數(shù)組初始化:
(1) 分行給二維數(shù)組賦初值.如
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
這種賦初值方法比較直觀,把第1個(gè)花括弧內(nèi)的數(shù)據(jù)給第1行的元素,第2個(gè)花括弧內(nèi)的數(shù)據(jù)賦給第2行的元素.....即 按行賦初值.
(2) 可以將所有數(shù)據(jù)寫(xiě)在一個(gè)花括弧內(nèi),近按數(shù)組排列的順序?qū)Ω髟刭x初值.如
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
效果與前相同.但以第1種方法好,一行對(duì)一行,界限清楚.用第2種方法如果數(shù)據(jù)多,寫(xiě)成一大片,容易遺漏,也不易檢 查.
(3) 可以對(duì)部分元素賦初值
int a[3][4]={{1},{5},{9}};
它的作用是只對(duì)各行第1列的元素賦初值,其余元素值自動(dòng)為0.賦初值后數(shù)組各元素為
1 0 0 0
5 0 0 0
9 0 0 0
也可以對(duì)各行中的某一元素賦初值:
int a[3][4]={{1},{0,6},{0,0,11}}
初始化后的數(shù)組元素如下:
1 0 0 0
0 6 0 0
0 0 11 0
這種方法對(duì)非0元素少時(shí)比較方便,不必將所有的0都寫(xiě)出來(lái),只需輸入少量數(shù)據(jù).
(4) 如果對(duì)全部元素都賦初值(即提供全部初始數(shù)據(jù)),則定義數(shù)組時(shí)對(duì)第一維的長(zhǎng)度可以不指定,但第二維的長(zhǎng)度不能 省.如:
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
與下面的定義等價(jià)
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
系統(tǒng)會(huì)根據(jù)數(shù)據(jù)總個(gè)數(shù)分配存儲(chǔ)空間,一共12個(gè)數(shù)據(jù),每行4列,當(dāng)然可確定為3行.
在定義時(shí)也可以只對(duì)部分元素賦初值而省略第一維的長(zhǎng)度,但應(yīng)分行賦初值.如:
int a[][4]={{0,0,3},{},{0,10}};
這樣的寫(xiě)法,能通知編譯系統(tǒng);數(shù)組共有3行.數(shù)組各元素為
0 0 3 0
0 0 0 0
0 10 0 0
例題: 將一個(gè)二維數(shù)組行和列元素互換,存到另一個(gè)二維數(shù)組中.例如:
| 1 2 3 | | 1 4 |
a= | | b= | 2 5 |
| 4 5 6 | | 3 6 |
程序如下:
main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("array b:\n")
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
}
程序運(yùn)行結(jié)果如下:
array a:
1 2 3
4 5 6
array b
1 4
2 5
3 6
----
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -