傳智播客旗下品牌:|||||

全國咨詢/投訴熱線:400-618-4000

二維數組是什么?二維數組怎么用?【C++培訓】

更新時間:2020年05月08日16時00分 來源:傳智播客 瀏覽次數:

二維數組的定義與初始化

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

類型說明符 數組名[常量表達式1] [常量表達式2];

在上述語法格式中,“常量表達式1”被稱為行下標,“常量表達式2”被稱為列下標。

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

int a[3][4];

在上述定義的二維數組中,共包含3*4個元素,即12個元素。接下來,通過一張圖來描述二維數組a的元素分布情況。

1588924115618_C++.jpg

從圖中可以看出,二維數組a是按行進行存放的,先存放a行,再存放a[1行、a2行,并且每行有4個元素,也是依次存放的。

完成二維數組的定義后,需要對二維數組進行初始化,初始化二維數組的方式有4種,具體如下。

(1)按行給二維數組賦初值。例如:

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

在上述代碼中,等號后面有一對大括號,大括號中的第1對括號代表的是第1行的數組元素,第2對括號代表的是第2行的數組元素。

(2)將所有的數組元素按行順序寫在1個大括號內。例如

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

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

(3)對部分數組元素賦初值。例如:

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

在上述代碼中,只為數組b中的部分元素進行了賦值,對于沒有賦值的元素,系統會自動賦值為0,數組b中元素的存儲方式如下所示。

1588924136474_C++-二維數組、.jpg

(4)如果對全部數組元素置初值,則二維數組的第1個下標可省略,但第2個下標不能省略。例如

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

可以寫為

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

系統會根據固定的列數,將后邊的數值進行劃分,自動將行數定為2。

二維數組的引用

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

數組名[下標] [下標];

在上述語法格式中,下標值應該在已定義的數組的大小范圍內,例如,下面這種情況就是錯誤的。

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

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

在上述代碼中,數組a可用的行下標范圍是0~2,列下標是0~3,a[3][4]超出了數組的下標范圍。為了幫助讀者更好地掌握二維數組的引用,接下來,通過一個案例來演示二維數組的遍歷。

#include

void main() {

    //申明并初始化數組

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

    for (int i = 0; i < 3; i++)    //循環遍歷

    {

        for (int j = 0; j < 4; j++)    //循環遍歷

        {

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

        }

        printf("\n");    //每行添加換行字符

    }

}

運行結果如下

1588924165993_二維數組運行案例.jpg

 

在上圖中定義了一個二維數組aray,該數組有3行4列。當使用嵌套for循環遍歷二維數組元素時,外層for循環用于變量數組的行元素,內層for循環用于遍歷數組的列元素。從圖中可以看出,程序依次將數組aray中的元素輸出了。

二維數組的應用

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

#include

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

{

    int StuScore[5][3] = {

        //張同學

        {88, 70, 90},

        //王同學

        {80, 80, 60},

        //李同學

        {89, 60, 85},

        //趙同學

        {80, 75, 78},

        //周同學

        {70, 80, 80}

    };

    int m = 0, n = 0;

    int nStuTotalScore = 0;

    int nMathTotalScore = 0;

    int nChineseTotalScore = 0;

    int nEnglishToatalScore = 0;

    printf("個人總成績:\n");

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

        nStuTotalScore = 0;

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

            nStuTotalScore += StuScore[m][n];

            switch (n)

            {

            case 0:

                {

                    nMathTotalScore += StuScore[m][n];

                    break;

                }

                case 1:

                {

                    nChineseTotalScore += StuScore[m][1];

                    break;

                }

                case 2:

                {

                    nEnglishToatalScore += StuScore[m][2];

                }

            }

        }

        switch (m)

        {

            case 0:

            {

                printf("張同學:%d\n", nStuTotalScore);

                break;

            }

            case 1:

            {

                printf("王同學:%d\n", nStuTotalScore);

                break;

            }

            case 2:

            {

                printf("李同學:%d\n", nStuTotalScore);

                break;

            }

            case 3:

            {

                printf("趙同學:%d\n", nStuTotalScore);

                break;

            }

            case 4:

            {

                printf("周同學:%d\n", nStuTotalScore);

                break;

            }

        }

    }

    printf("小組數學總分: %d 小組數學平均分:%.2f\n",

        nMathTotalScore, (double)nMathTotalScore / 5);

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

        nChineseTotalScore, (double)nChineseTotalScore / 5);

    printf("小組英語總分: %d 小組英語平均分:%。2f\n",

        nEnglishToatalScore, (double)nEnglishToatalScore / 5);

 

}

運行結果如下

1588924183471_二維數組運行案例2.jpg


上面案例中實現了計算小組各科平均分的功能。其中,第415行代碼定義了一個二維數組,用來存儲小組中每個成員的各科成績。第25~45行代碼通過遍歷列下標獲取每個小組不同學科的總分,第46~74行代碼通過遍歷行下標獲取每個小組成員的總分,最后將小組不同學科的總分和平均分輸出。以上我們介紹了C++二維數據的定義和用法,如果想學習C++可以了解傳智播客C++培訓課程

猜你喜歡:

C++中一維數組是什么?怎么使用?

數組是什么?看完你就明白了

C/C :指針數組和數組指針淺析

C語言二維數組的定義和引用

网赚方法都有些什么样的 福缘网赚论坛 新凤凰彩票注册 四肖三期必開 2019最新网赚工具 河南快3走势图 河北快3开奖 3a网赚平台 2019网赚棋牌项目 2019最新免费挂机网赚