C語言編程學(xué)習(xí)二維數(shù)組的定義與初始化

C語言是面向過程的,而C++是面向?qū)ο蟮?/p>

C和C++的區(qū)別:

C是一個結(jié)構(gòu)化語言,它的重點在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計首要考慮的是如何通過一個過程,對輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制)。

C++,首要考慮的是如何構(gòu)造一個對象模型,讓這個模型能夠契合與之對應(yīng)的問題域,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制。 所以C與C++的最大區(qū)別在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進(jìn),是因為“ 設(shè)計這個概念已經(jīng)被融入到C++之中 ”。

C與C++的最大區(qū)別:在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進(jìn),是因為“ 設(shè)計這個概念已經(jīng)被融入到C++之中 ”,而就語言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,錯!算法是程序設(shè)計的基礎(chǔ),好的設(shè)計如果沒有好的算法,一樣不行。而且,“C加上好的設(shè)計”也能寫出非常好的東西。

在實際的工作中,僅僅使用一維數(shù)組是遠(yuǎn)遠(yuǎn)不夠的。例如,一個學(xué)習(xí)小組有5個人,每個人有三門課的考試成績,如果使用一維數(shù)組解決是很麻煩的。這時,可以使用二維數(shù)組,二維數(shù)組的定義方式與一維數(shù)組類似,其語法格式如下:

類型說明符 數(shù)組名 [常量表達(dá)式1] [常量表達(dá)式2];

在上述語法格式中,“常量表達(dá)式1”被稱為行下標(biāo),“常量表達(dá)式2”被稱為列下標(biāo)。

例如,定義一個3行4列的二維數(shù)組,具體如下:

int a[3][4];

在這個定義的二維數(shù)組中,共包含3 * 4個元素,即12個元素。接下來,通過一張圖來描述二維數(shù)組a的元素分布情況,如圖所示:

小編推薦一個學(xué)C語言/C++的學(xué)習(xí)裙【 六九九,四七零,五九六 】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!

從圖中可以看出,二維數(shù)組a是按行進(jìn)行存放的,先存放a[0]行,再存放a[1]行、a[2]行,并且每行有四個元素,也是依次存放的。

完成二維數(shù)組的定義后,需要對二維數(shù)組進(jìn)行初始化,初始化二維數(shù)組的方式有四種,具體如下:

1、按行給二維數(shù)組賦初值。

例如:

int a[2][3] = {{1,2,3},{4,5,6}};

在上述代碼中,等號后面有一對大括號,大括號中的第一對括號代表的是第一行的數(shù)組元素,第二對括號代表的是第二行的數(shù)組元素。

2、將所有的數(shù)組元素按行順序?qū)懺谝粋€大括號內(nèi)。

例如:

int a[2][3] = {1,2,3,4,5,6};

在上述代碼中,二維數(shù)組a共有兩行,每行有三個元素,其中,第一行的元素依次為1、2、3,第二行元素依次為4、5、6。

3、對部分?jǐn)?shù)組元素賦初值。

例如:

int b[3][4] = {{1},{4,3},{2,1,2}};

在上述代碼中,只為數(shù)組b中的部分元素進(jìn)行了賦值,對于沒有賦值的元素,系統(tǒng)會自動賦值為0,數(shù)組b中元素的存儲方式如圖所示:

4、如果對全部數(shù)組元素置初值,則二維數(shù)組的第一個下標(biāo)可省略,但第二個下標(biāo)不能省略。

例如:

int a[2][3] = {1,2,3,4,5,6};

可以寫為

int a[][3] = {1,2,3,4,5,6};

系統(tǒng)會根據(jù)固定的列數(shù),將后邊的數(shù)值進(jìn)行劃分,自動將行數(shù)定位2。

二維數(shù)組的引用

二維數(shù)組的引用方式同一維數(shù)組的引用方式一樣,也是通過數(shù)組名和下標(biāo)的方式來引用數(shù)組元素,其語法格式如下:

數(shù)組名[下標(biāo)][下標(biāo)];

在上述語法格式中,下標(biāo)值應(yīng)該在已定義的數(shù)組的大小范圍內(nèi),例如下面這種情況是錯誤的:

int a[3][4]; // 定義a為3行4列的二維數(shù)組

a[3][4]=3; // 數(shù)組a第3行第4列元素賦值,出錯

在上述代碼中,數(shù)組a可用的行下標(biāo)范圍是0~2,列下標(biāo)是0~3,a[3][4]超出了數(shù)組的下標(biāo)范圍。

為了幫助大家更好地掌握二維數(shù)組的引用,接下來,通過一個案例來演示二維數(shù)組的遍歷,如例所示:

1 #include

2 int main()

3 {

4 //聲明并初始化數(shù)組

5 int array[3][4] = { {1,2,3,4 }, {5,6,7,8}, {9,10,11,12} };

6 for (int i = 0; i < 3; i++) //循環(huán)遍歷行

7 {

8 for (int j = 0; j < 4; j++) //循環(huán)遍歷列

9 {

10 printf("[%d][%d]: %d ", i, j, array[i][j]);

11 }

12 printf(" ");//每一行的末尾添加換行符

13 }

14 return 0;

15}

運(yùn)行結(jié)果如圖所示:

小編推薦一個學(xué)C語言/C++的學(xué)習(xí)裙【 六九九,四七零,五九六 】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!

在這個例子中,我們定義了一個二維數(shù)組array,該數(shù)組有3行4列。當(dāng)使用嵌套for循環(huán)遍歷二維數(shù)組元素時,外層for循環(huán)用于變量數(shù)組的行元素,內(nèi)層for循環(huán)用于遍歷數(shù)組的列元素。從運(yùn)行結(jié)果中可以看出,程序依次將數(shù)組array中的元素輸出了。

二維數(shù)組的應(yīng)用

熟悉了二維數(shù)組的定義和引用,接下來定義一個二維數(shù)組StuScore[5][3],用來存放5名同學(xué)3門課程的成績,并定義變量m表示學(xué)生,n表示第幾門成績,aver表示每名同學(xué)3門課程的平均成績,sum表示每名同學(xué)3門課的總成績,具體如下例所示:

1 #include

2 void main(int argc, char * argv[])

3 {

4 int StuScore[5][3] = {

5 { 88, 70, 90 }, //張同學(xué)

6 { 80, 80, 60 }, //王同學(xué)

7 { 89, 60, 85 }, //李同學(xué)

8 { 80, 75, 78 }, //趙同學(xué)

9 { 70, 80, 80 } //周同學(xué)

10 };

11 int m = 0, n = 0;

12 int nStuTotalScore;

13 int nMathTotalScore = 0;

14 int nChineseTotalScore = 0;

15 int nEnglishTotalScore = 0;

16 printf("個人總成績: ");

17 for (m = 0; m < 5; m++)

18 {

19 nStuTotalScore = 0;

20 for (n = 0; n < 3; n++)

21 {

22 nStuTotalScore += StuScore[m][n];

23 switch (n)

24 {

25 case 0:

26 {

27 nMathTotalScore += StuScore[m][0];

28 break;

29 }

30 case 1:

31 {

32 nChineseTotalScore += StuScore[m][1];

33 break;

34 }

35 case 2:

36 {

37 nEnglishTotalScore += StuScore[m][2];

38 }

39 }

40 }

41 switch (m)

42 {

43 case 0:

44 {

45 printf("張同學(xué):%d ", nStuTotalScore);

46 break;

47 }

48 case 1:

49 {

50 printf("王同學(xué):%d ", nStuTotalScore);

51 break;

52 }

53 case 2:

54 {

55 printf("李同學(xué):%d ", nStuTotalScore);

56 break;

57 }

58 case 3:

59 {

60 printf("趙同學(xué):%d ", nStuTotalScore);

61 break;

62 }

63 case 4:

64 {

65 printf("周同學(xué):%d ", nStuTotalScore);

66 break;

67 }

68 }

69 }

70 printf("小組數(shù)學(xué)總分:%d 小組數(shù)學(xué)平均分:%.2f ",

71 nMathTotalScore, (double)nMathTotalScore / 5);

72 printf("小組語文總分:%d 小組語文平均分:%.2f ",

73 nChineseTotalScore, (double)nChineseTotalScore / 5);

74 printf("小組英語總分:%d 小組英語平均分:%.2f ",

75 nEnglishTotalScore, (double)nEnglishTotalScore / 5);

76}

運(yùn)行結(jié)果如圖所示:

這個例題中實現(xiàn)了計算小組各科平均分的功能。其中,首先代碼定義了一個二維數(shù)組,用來存儲小組中每個成員的各科成績。然后通過遍歷列下標(biāo)獲取每個小組不同學(xué)科的總分,再然后通過遍歷行下標(biāo)獲取每個小組成員的總分,最后將小組不同學(xué)科的總分和平均分輸出。

多維數(shù)組

在計算機(jī)中,除一維數(shù)組和二維數(shù)組外,還有三維,四維,……等多維數(shù)組,它們用在某些特定程序開發(fā)中,多維數(shù)組的定義與二維數(shù)組類似,其語法格式具體如下:

數(shù)組類型修飾符 數(shù)組名 [n1][n2]…[nn];

定義一個三維數(shù)組的示例代碼如下:

int x[3][4][5];

小編推薦一個學(xué)C語言/C++的學(xué)習(xí)裙【 六九九,四七零,五九六 】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享!

上面的這個例子,定義了一個三維數(shù)組,數(shù)組的名字是x,數(shù)組的長度為3,每個數(shù)組的元素又是一個二維數(shù)組,這個二維數(shù)組的長度是4,并且這個二維數(shù)組中的每個元素又是一個一維數(shù)組,這個一維數(shù)組的長度是5,元素類型是int。

多維數(shù)組在實際的工作中使用不多,并且使用方法與二維數(shù)組相似,這里不再做詳細(xì)地講解,有興趣的話大家可以自己學(xué)習(xí)。

這些是C/C++能做的

服務(wù)器開發(fā)工程師、人工智能、云計算工程師、信息安全(黑客反黑客)、大數(shù)據(jù) 、數(shù)據(jù)平臺、嵌入式工程師、流媒體服務(wù)器、數(shù)據(jù)控解、圖像處理、音頻視頻開發(fā)工程師、游戲服務(wù)器、分布式系統(tǒng)、游戲輔助等

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 數(shù)組在程序設(shè)計中,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數(shù)據(jù)元素的集合稱...
    朱森閱讀 4,285評論 2 13
  • 第1章 第一個C程序第2章 C語言基礎(chǔ)第3章 變量和數(shù)據(jù)類型第4章 順序結(jié)構(gòu)程序設(shè)計第5章 條件結(jié)構(gòu)程序設(shè)計第6章...
    小獅子365閱讀 10,890評論 3 71
  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型。 運(yùn)用指針編程是C語言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,619評論 3 44
  • 大家好!聽著佛號,很是歡喜,是時候給我的好種子澆水施肥,此時此刻我正在做我即將做的事,因為我想達(dá)成我的個人目標(biāo),某...
    李鮮花閱讀 141評論 0 1
  • 從太史公著《史記》以來,非王侯將相或蓋世人物不能立傳。而今互聯(lián)網(wǎng)社會,任何平凡人都可以在網(wǎng)絡(luò)上留下痕跡,憑此痕跡即...
    會計醬閱讀 1,591評論 0 0

友情鏈接更多精彩內(nèi)容