C#中二維陣列
生活中,有很多事物,僅僅用一維陣列,將無法恰當地被表示。還是說學生成績管理吧。一個班級30個學員,你把他們編成1到30號,這很好。但現在有兩個班級要管理怎麼辦?人家每個班級都自有自的編號,比如一班學生編是1~30;二班的學生也是1~30。你說,不行,要進行計算機管理,你們兩班學員的編號要混在一起,從1號編到60號。
另外一種情況,仍然只有一個班級30人。但這回他們站到了操場,他們要做廣播體操,排成5行6列。這時所有老師都不管學員的編號了,老師會這樣喊:“第2排第4個同學,就說你啦!踢錯腳了!”。假設我們的校長大人要坐在校長室裡,通過一個裝有監視器的電腦檢視全校學員做廣播體操,這時,我們也需要一個多維陣列。
二、二維陣列基本語法
語法:定義一個二維陣列。
資料型別 陣列名=new 資料型別[第二維大小][第一維大小];
舉例:
int arr=new int[5][6]; //注意,以分號結束。
這就是操場上那個“5行6列的學生陣”。當然,哪個是行哪個列憑你的習慣。如果數人頭時,喜歡一列一列地數,那你也可以當成它是“5列6行”——臺灣人好像有這怪僻——我們還是把它看成5行6列吧。
現在:
第一排第一個學員是哪個?答:arr[0][0];
第二排第三個學員是?答:arr[1][2];
也不併不困難,對不?惟一別扭的其實還是那個老問題:現實上很多東西都是從1開始計數,而在C#裡,總是要從0開始計數。
接下來,校長說,第一排的全體做得很好啊,他們的廣播體操得分全部加上5分!程式如何寫?答:
for(int col=0; col<6; col++)
{
arr[0][col] += 5;
}
對了,這裡我沒有用 i 來作迴圈的增量,而是用col。因為col在英語裡表示“列”,這樣更直觀對不?下面要用到行,則用row。
廣播操做到“跳躍運動”了,校長大人在辦公室蹦了兩下,感覺自已青春依舊,大為開心,決定給所有學員都加1分,程式如何寫?答:
for(int row = 0; row < 5; row++)
{
for(int col = 0; col < 6; col++)
{
arr[row][col] += 1;
}
}
看明白了嗎?在二維陣列,要確定一個元素,必須使用兩個下標。
另外,這個例子也演示瞭如何遍歷一個二維陣列:使用雙層迴圈。第一層迴圈讓row 從 0到 4, 用於遍歷每一行;col從0到5,遍歷每一行中的每一列。
(遍歷:訪問某一集合中的每一個元素的過程)
大家把這兩個程式都實際試一試.
三、二維陣列初始化
int arr[5][6] =
{
{ 0, 1, 2, 3, 4, 5},
{10,11,12,13,14,15},
{20,21,22,23,24,25},
{30,31,32,33,34,35},
{40,41,42,43,44,45},
}; //注意,同樣以分號結束
初始化二維陣列使用了兩層{},內層初始化第一維,每個內層之間用逗號分隔。
例:
我們可以把這個陣列通過雙層迴圈輸出:
for(int row = 0; row < 5; row++)
{
for(int col = 0; col < 6; col++)
{
Console.WriteLine("{0} ",arr[row][col]);
}
}
這段程式碼會把二維陣列arr中的所有元素(5*6=30個),一行一個地,一古腦地輸出,並不適於我們瞭解它的二維結構。我們在輸出上做些修飾:
for(int row = 0; row < 5; row++)
{
Console.WriteLine("第" +( row + 1).ToStirng()+ "行: ");
for(int col = 0; col < 6; col++)
{
Console.WriteLine("{0} ",arr[row][col] ); //同一行的元素用逗號分開
}
Console.WriteLine(); //換行
}
請大家分別上機試驗這兩段程式碼,對比輸出結果,明白二維陣列中各元素次序。下面是完整程式中,後一段程式碼的輸出:
四、綜合舉例
1.兩個二給陣列相加
using System;
using System.Collections.Generic;
using System.Text;
namespace ListArrayApp
{
class IIArray
{
int[,] aArray = new int[3, 3];
int[,] bArray = new int[3, 3];
int[,] cArray = new int[3, 3];
//接受
public void AcceptValue()
{
Console.WriteLine("請輸入第一個陣列的值:");
for (int i = 0; i < aArray.GetLength(0); i++)
{
for (int j = 0; j < aArray.GetLength(1); j++)
{
aArray[i, j] = int.Parse(Console.ReadLine());
}
}
Console.WriteLine();
Console.WriteLine("請輸入二個數組的值:");
for (int i = 0; i < bArray.GetLength(0); i++)
{
for (int j = 0; j < bArray.GetLength(1); j++)
{
bArray[i, j] = int.Parse(Console.ReadLine());
}
}
}
//計算
public void AddValue()
{
for (int i = 0; i < aArray.GetLength(0); i++)
{
for (int j = 0; j < aArray.GetLength(1); j++)
{
cArray[i, j] = aArray[i, j];
}
}
for (int i = 0; i < bArray.GetLength(0); i++)
{
for (int j = 0; j < bArray.GetLength(1); j++)
{
cArray[i, j] += bArray[i, j];
}
}
}
//輸出
public void DisplayValue()
{
Console.WriteLine("第一個陣列如下:");
for (int i = 0; i < aArray.GetLength(0); i++)
{
for (int j = 0; j < aArray.GetLength(1); j++)
{
Console.Write("{0} ", aArray[i, j]);
}
Console.WriteLine();
}
Console.WriteLine();
Console.WriteLine("第二個陣列如下:");
for (int i = 0; i < bArray.GetLength(0); i++)
{
for (int j = 0; j < bArray.GetLength(1); j++)
{
Console.Write("{0} ", bArray[i, j]);
}
Console.WriteLine();
}
Console.WriteLine();
Console.WriteLine("計算結果陣列如下:");
for (int i = 0; i < cArray.GetLength(0); i++)
{
for (int j = 0; j < cArray.GetLength(1); j++)
{
Console.Write("{0} ", cArray[i, j]);
}
Console.WriteLine();
}
}
}
class Program
{
static void Main(string[] args)
{
IIArray sa = new IIArray();
sa.AcceptValue();
sa.AddValue();
sa.DisplayValue();
Console.ReadLine();
}
}
}
2.求楊輝三角(又稱Pascal三角)
using System;
using System.Collections.Generic;
using System.Text;
namespace IIIArrayApp
{
class Program
{
static void Main(string[] args)
{
int[,] sArray = new int[10, 10];
sArray[0, 0] = 1;
for (int i = 1; i <sArray.GetLength(0); i++)
{
sArray[i, 0] = 1;
sArray[i, i] = 1;
for (int j = 1; j <=i; j++)
{
sArray[i, j] = sArray[i - 1, j - 1] + sArray[i - 1, j];
}
}
for (int i = 0; i < sArray.GetLength(0); i++)
{
for (int j = 0; j <=i; j++)
{
Console.Write("{0} ", sArray[i, j]);
}
Console.WriteLine();
}
Console.ReadLine();
}
}
}
相關推薦
C#中二維陣列int[,]與交叉陣列int[][]的區別
首先說一下交叉陣列這個東西是C#裡面的,c++裡面是沒有的交叉陣列這個定義的 int[][] 是陣列的陣列,即一個一維陣列的每個元素都是一個數組,這個在C++,java等語言裡面也是這麼定義的; int[,]這個是C#中提供的一個二維陣列的形式,在C++中並不存在
C/C++中二維陣列和指標關係分析
在C/c++中,陣列和指標有著密切的關係,有很多地方說陣列就是指標式錯誤的一種說法。這兩者是不同的資料結構。其實,在C/c++中沒有所謂的二維陣列,書面表達就是陣列的陣列。我猜想是為了表述方便才叫它二維陣列。 在本文中,我也就叫它二維陣列。在C/C
c++中二維陣列與二維向量的長度
對於一個二維陣列: int mm[3][5] = { { 1,2,3,4,5 },{ 5,6,7,8,9 },{ 9,10,11,12,13 } }; int toatlnums = sizeof(mm) / sizeof(int); //元素總個數 int cols =
C#中二維陣列
生活中,有很多事物,僅僅用一維陣列,將無法恰當地被表示。還是說學生成績管理吧。一個班級30個學員,你把他們編成1到30號,這很好。但現在有兩個班級要管理怎麼辦?人家每個班級都自有自的編號,比如一班學生編是1~30;二班的學生也是1~30。你說,不行,要進行計算機管理,你們兩班學員的編號要混在一起,
C++中二維陣列總結
最近程式設計需要研究了一下二維陣列,網上這方面的資料蠻多了,彙總一下,歡迎補充! 關於二維資料的基本知識見這裡: 關於二維資料的動態分配,以下部落格講述得比較清楚: 舉例: //動態定義一維陣列、二維陣列、三維陣列 #include<iostream>
C++中二維陣列的使用
1 定義 在C++中,如果陣列的元素又是陣列,則稱為二維陣列,其每一維對應一個下標,第一維通常稱為行(row),第二維則稱為列(column)。例如 int a[2][3]; 可以將二維陣列a看成是一個2行3列的矩陣。 2 初始化 2.1使用花括號進行初始化 可以使用花括號
C++中二維陣列的初始化
在C++中,二位陣列有兩種使用方式。 第一種是靜態宣告及初始化,如下: int array2[3][2]={{4,2},{5},{6}};第二種是,有時我們不知道二維陣列需要多少行和多少列,這時是動態陣列。 int **array; 後來我們通過輸入來獲取陣列的行n
C語言中二維陣列名與陣列地址、首行地址、首行首元素地址關係與區別詳解(初學者必須掌握)
C語言作為很多大學理工科都會學習的語言,作為一種程式設計入門語言。但是相對於其他高階程式語言來說相對是比較難,尤其是指針,不知道有多少莘莘學子都是因為它,從C語言入門到放棄。想當年,筆者在大一學習C語言
c語言二維陣列在子函式中的傳址
在學習c語言的過程中,指標與二維陣列的傳值,傳址一直是我比較混淆的部分,今天做了一個較為完整的總結 一.自己定義的陣列傳址 1. <span style="font-size:18px;">#include<iostream> #inc
C++中二維動態陣列的建立
方法1.用new / delete建立二維動態陣列 程式碼: #include<iostream> #include<vector> using namespace std; #define ROW 2 //行數 #define COLUMN
C 語言中二維陣列指標詳解
C語言中,指標是一個複雜但又靈活多變的知識點,我們知道,在一維陣列中,對於一個數組a[],*a,a,&a,都表示a的首地址,但如果與二維陣列混合使用,就顯得更為複雜了。例如對於一個二維陣列 a[2][4]={{1,2.3},{4,5,6}} a+i,&a
9、C語言中二維陣列及陣列名及指向二維陣列的指標變數
#include <stdio.h> #include <stdlib.h> //與二維陣列相關的指標變數([] 比 *優先順序高) //在一般指標變數指向二維陣列,或者n維陣列,要直接操作a[i][j],對指標的操作必須有兩個符號(其中不出現&,如果有&則相應的加
徹底搞清C/C++中一維陣列,二維陣列,指標,陣列指標和指標陣列以及指向指標的指標,行地址和列地址之間的關係
#include <iostream> using namespace std; void test(char **ptr) { for(;(strcmp(*ptr,"NULL"))!=0;ptr=ptr+1) cout << *(ptr) <&l
C#中二維數組的行數和列數
取數 word 二維數組 同學 定義 dimen 行數 nbsp col 最近在項目中用到二維數組,需要獲取數組的行數和列數,本以為是很簡單的一些東西,卻發現網上好多答案都是錯誤的,遂寫下隨筆,希望之後有用到的同學們能夠順利解決答案。 下面是一些關於數組的一些屬性和方法以及
C語言-----二維陣列
二維陣列的建立,初始化,使用。 (一)二維陣列的建立 二維陣列定義的一般形式:型別說明符 陣列名[常量表達式][常量表達式] 舉例如下: int a[3][4]; //定義a為 3*4(3行4列) 的陣列。 二位陣列又可以看作是一種特殊的一維陣列:它的元素又是一個一維陣列
Python中二維陣列的建立
習慣了java的Matrix = [][]不知道python怎麼創二維陣列。 先看 python中的二維陣列操作 對最後提出的二維陣列建立方式存在疑問 Matrix = [([0] * 3) for i in range(4)] 為什麼可以用[0]*3?不會淺拷貝嗎? 看了
C語言二維陣列指標練習
描述 程式填空,使其輸出結果是: 1,2,3,4, 10,12,14,16, 18,20,11,12, #include <iostream> using namespace std; void Double(int * p, int n) { for(int i = 0;i
15. C語言 -- 二維陣列
本部落格主要內容為 “小甲魚” 視訊課程《帶你學C帶你飛》【第一季】 學習筆記,文章的主題內容均來自該課程,在這裡僅作學習交流。在文章中可能出現一些錯誤或者不準確的地方,如發現請積極指出,十分感謝。 也歡迎大家一起討論交流,如果你覺得這篇文章對你有所幫助,記得評論、點贊哦 ~(。
C/C++獲取二維陣列行列數
對於type array[A][B];形式的二維陣列,可以通過計算sizeof獲取行列數。 sizeof(array[0][0])為一個元素佔用的空間, sizeof(array[0])為一行元素佔用的空間, sizeof(array)為整個陣列佔用的空間, 行數 = sizeof(ar
[C語言]二維陣列傳參的格式(詳細+總結)
喜歡就為我點贊,評論加收藏。 轉載請標明出處[link]https://blog.csdn.net/qq_43868654/article/details/84641383 初遇二維陣列作函式引數,宛如自己化身為了大頭兒子。很頭大。 不禁大聲吶喊:該怎麼宣告定義,該怎麼呼叫,又該怎麼