C 中二維陣列

2021-04-13 22:08:19 字數 2940 閱讀 8008

一、為什麼要使用多維陣列

生活中,有很多事物,僅僅用一維陣列,將無法恰當地被表示。還是說學生成績管理吧。乙個班級30個學員,你把他們編成1到30號,這很好。但現在有兩個班級要管理怎麼辦?人家每個班級都自有自的編號,比如一班學生編是1~30;二班的學生也是1~30。你說,不行,要進行計算機管理,你們兩班學員的編號要混在一起,從1號編到60號。 

另外一種情況,仍然只有乙個班級30人。但這回他們站到了操場,他們要做廣播體操,排成5行6列。這時所有老師都不管學員的編號了,老師會這樣喊:「第2排第4個同學,就說你啦!踢錯腳了!」。假設我們的校長大人要坐在校長室裡,通過乙個裝有監視器的電腦檢視全校學員做廣播體操,這時,我們也需要乙個多維陣列。

二、二維陣列基本語法  

語法:定義乙個二維陣列。   

資料型別 陣列名=

new  

資料型別[第二維大小][第一維大小];   

舉例:   

int arr=new int[5][6]; //注意,以分號結束。   

現在:   

第一排第乙個學員是哪個?答:arr[0][0]; 

第二排第三個學員是?答:arr[1][2];   

也不並不困難,對不?惟一彆扭的其實還是那個老問題:現實上很多東西都是從1開始計數,而在c#裡,總是要從0開始計數。   

接下來,校長說,第一排的全體做得很好啊,他們的廣播體操得分全部加上5分!程式如何寫?答:   

for(int col=0; col<6; col++)   

對了,這裡我沒有用 i 來作迴圈的增量,而是用col。因為col在英語裡表示「列」,這樣更直觀對不?下面要用到行,則用row。   

廣播操做到「跳躍運動」了,校長大人在辦公室蹦了兩下,感覺自已青春依舊,大為開心,決定給所有學員都加1分,程式如何寫?答:   

for(int row = 0; row 

} 看明白了嗎?在二維陣列,要確定乙個元素,必須使用兩個下標。 

另外,這個例子也演示了如何遍歷乙個二維陣列:使用雙層迴圈。第一層迴圈讓row 從 0到 4, 用於遍歷每一行;col從0到5,遍歷每一行中的每一列。 

(遍歷:訪問某一集合中的每乙個元素的過程)   

大家把這兩個程式都實際試一試.

三、二維陣列初始化

int arr[5][6] = 

,           

, , 

, , 

}; //注意,同樣以分號結束 

初始化二維陣列使用了兩層{},內層初始化第一維,每個內層之間用逗號分隔。 

例:我們可以把這個陣列通過雙層迴圈輸出:  

for(int row = 0; row 

",arr[row][col]); 

}  } 

這段**會把二維陣列arr中的所有元素(5*6=30個),一行乙個地,一古腦地輸出,並不適於我們了解它的二維結構。我們在輸出上做些修飾: 

for(int row = 0; row 

",arr[row][col] ); //

同一行的元素用逗號分開

console.writeline(); //換行

請大家分別上機試驗這兩段**

,對比輸出結果

,明白二維陣列中各元素次序。下面是完整程式中,後一段**的輸出: 

四、綜合舉例

1.兩個二給陣列相加

using system;

using system.collections.generic;

using system.text;

}

console.writeline();

console.writeline("請輸入二個陣列的值:");

for (int i = 0; i 

} }

//計算

public void addvalue()

} for (int i = 0; i 

} }

//輸出

public void displayvalue()

", aarray[i, j]); }

console.writeline(); }

console.writeline();

console.writeline("第二個陣列如下:");

for (int i = 0; i 

", barray[i, j]); }

console.writeline(); }

console.writeline();

console.writeline("計算結果陣列如下:");

for (int i = 0; i 

", carray[i, j]); }

console.writeline();

}            }

}class program

} }

2.求楊輝三角(又稱pascal三角)

using system;

using system.collections.generic;

using system.text;

}

for (int i = 0; i 

", sarray[i, j]); }

console.writeline(); }

console.readline(); }

} }

中 二維陣列查詢

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。這道題可以直接用for暴力迴圈來做,但是不確定時間會不會超時。我也考慮過有序集用雙重二分查詢,但是這種查詢需要...

C 中二維陣列new小結

二維陣列new小結 轉至水木清華 1.a ga n new a m n delete ga 缺點 n必須是已知 優點 呼叫直觀,連續儲存,程式簡潔 經過測試,析構函式能正確呼叫 2.a ga new a m for int i 0 i m i ga i new a n for int i 0 i m...

C 中二維陣列new小結

二維陣列new小結 轉至水木清華 1.a ga n new a m n delete ga 缺點 n必須是已知 優點 呼叫直觀,連續儲存,程式簡潔 經過測試,析構函式能正確呼叫 2.a ga new a m for int i 0 i m i ga i new a n for int i 0 i m...