首頁技術(shù)文章正文

C++培訓(xùn):一維數(shù)組的常見操作

更新時(shí)間:2020-05-07 來源:黑馬程序員 瀏覽量:

1577370495235_學(xué)IT就到黑馬程序員.gif


一維數(shù)組的定義與初始化

一維數(shù)組指的是只有一個(gè)下標(biāo)的數(shù)組,它用來表示一組具有相同類型的數(shù)據(jù)。在C語言中,一維數(shù)組的定義方式如下所示:

 

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

 

在上述語法格式中,類型說明符表示數(shù)組中所有元素的類型,常量表達(dá)式指的是數(shù)組的長度,也就是數(shù)組中存放元素的個(gè)數(shù)。

 

int array[5l;

 

上述代碼定義了一個(gè)數(shù)組,其中,int是數(shù)組的類型,aray是數(shù)組的名稱,方括號(hào)中的5是數(shù)組的長度。完成數(shù)組的定義后,只是對數(shù)組中的元素開辟了一塊內(nèi)存空間。這時(shí),如果想使用數(shù)組操作數(shù)據(jù),還需要對數(shù)組進(jìn)行初始化。數(shù)組初始化的常見的方式有3種,具體如下

 

(1)直接對數(shù)組中的所有元素賦值,示例代碼如下:

 

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

 

上述代碼定義了一個(gè)長度為5的數(shù)組i,并且數(shù)組中元素的值依次為1、2、3、4、5。

 

(2)只對數(shù)組中的一部分元素賦值,示例代碼如下

 

int i[5]={1,2,3};

 

在上述代碼中,定義了一個(gè)int類型的數(shù)組,但在初始化時(shí),只對數(shù)組中的前3個(gè)元素進(jìn)行了賦值,其他元素的值會(huì)被默認(rèn)設(shè)置為

 

(3)對數(shù)組全部元素賦值,但不指定長度,示例代碼如下:

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

 

在上述代碼中,數(shù)組i中的元素有4個(gè),系統(tǒng)會(huì)根據(jù)給定初始化元素的個(gè)數(shù)定義數(shù)組的長度,因此,數(shù)組i的長度為4。

 

注意

(1)數(shù)組的下標(biāo)是用方括號(hào)括起來的,而不是圓括號(hào);

(2)數(shù)組名的命名同變量名的命名規(guī)則相同;

(3)數(shù)組定義中,常量表達(dá)式的值可以是符號(hào)常量,如下面的定義就是合法的。

 

int a[N];      //假設(shè)預(yù)編譯命令#define N 4,下標(biāo)是符號(hào)常量

 

一維數(shù)組的引用

在程序中,經(jīng)常需要訪問數(shù)組中的一些元素,這時(shí)可以通過數(shù)組名和下標(biāo)來引用數(shù)組中

的元素。一維數(shù)組元素的引用方式如下所示:

 

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

 

在上述方式中,下標(biāo)指的是數(shù)組元素的位置,數(shù)組元素的下標(biāo)是從0開始的。例如,引用數(shù)組X的第3個(gè)元素的方式為X[2]為了幫助大家更好地理解數(shù)組元素的引用榜下業(yè)通計(jì)一個(gè)室例來演示,如下所示:

 

#include<stdio.h>

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

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

    int i;

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

        printf("%d\n", 2 * x[i]);

    }

}

 

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

1588840282466_一維數(shù)組01.jpg


在上面案例中,首先定義了一個(gè)數(shù)組x,然后通過下標(biāo)的形式獲取到數(shù)組中的元素,最后將元素乘以2后輸出。

 

注意

數(shù)組的下標(biāo)都有一個(gè)范圍,即“0~[數(shù)組長度-1]”,假設(shè)數(shù)組的長度為6,其下標(biāo)范圍為0~5。當(dāng)訪問數(shù)組中的元素時(shí),下標(biāo)不能超出這個(gè)范圍,否則程序會(huì)報(bào)錯(cuò)。

 

一維數(shù)組的常見操作

數(shù)組在編寫程序時(shí)應(yīng)用非常廣泛,如經(jīng)常需要對數(shù)組進(jìn)行遍歷、獲取最值、排序等操作靈活地使用數(shù)組對實(shí)際開發(fā)很重要。接下來針對一維數(shù)組的常見操作進(jìn)行詳細(xì)的講解,具體如下。

 

1、一維數(shù)組的遍歷

在操作數(shù)組時(shí),經(jīng)常需要依次訪問數(shù)組中的每個(gè)元素,這種操作稱作數(shù)組的遍歷。接下來使用for循環(huán)依次遍歷數(shù)組中的元素,如下所示:

 

#include<stdio.h>

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

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

    int i = 0;

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

        printf("x[%d]:%d\n", i, x[i]);

    }

}

運(yùn)行結(jié)果如下:

1588840291606_一維數(shù)組02.jpg


在上面案例中,首先定義了一個(gè)長度為5的數(shù)組X,然后定義了一個(gè)變量,由于數(shù)組的下標(biāo)范圍為0-4,因此可以將i的值作為下標(biāo),依次去訪問數(shù)組中的元素,并將元素的值輸出。

 

2、一維數(shù)組的最值

在操作數(shù)組時(shí),經(jīng)常需要獲取數(shù)組中元素的最值。接下來通過案例演示如何獲得數(shù)組中最大的數(shù)值。

#include<stdio.h>

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

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

    int nMax = x[0];

    int i = 0;

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

        if (x[i] > nMax) {

            nMax = x[i];

        }

    }

 

    printf("max:%d\n", nMax);

    return 0;

}

 

運(yùn)行結(jié)果如下

 

1588840301348_一維數(shù)組03.jpg


在上面案例找那個(gè)實(shí)現(xiàn)了獲取數(shù)組X最大值的功能。在第5行代碼中假定數(shù)組中的第1個(gè)元素為最大值,并將其賦值給nMax,在第7~13行代碼對數(shù)組中的其他元素進(jìn)行遍歷,如果發(fā)現(xiàn)比mMax值大的元素,就將最大值nMx設(shè)置為這個(gè)元素的值,這樣,當(dāng)數(shù)組遍歷完成后,nMax中存儲(chǔ)的就是數(shù)組中的最大值。

 

3、一維數(shù)組的排序

在操作數(shù)組時(shí),經(jīng)常需要對數(shù)組中的元素進(jìn)行排序。接下來為大家介紹一種比較常見的排序算法一冒泡排序。在冒泡排序的過程中,不斷地比較數(shù)組中相鄰的兩個(gè)元素,較小者向上浮、較大者往下沉,整個(gè)過程和水中氣泡上升的原理相似,接下來,分步驟講解冒泡排序的整個(gè)過程,具體如下。

第1步,從第1個(gè)元素開始,將相鄰的兩個(gè)元素依次進(jìn)行比較,直到最后兩個(gè)元素完成比較。如果前1個(gè)元素比后1個(gè)元素大,則交換它們的位置。整個(gè)過程完成后,數(shù)組中最后1個(gè)元素自然就是最大值,這樣也就完成了第1輪的比較。

第2步,除了最后1個(gè)元素,將剩余的元素繼續(xù)進(jìn)行兩兩比較,過程與第1步相似,這樣就可以將數(shù)組中第二大的數(shù)放在倒數(shù)第2個(gè)位置。

第3步,依次類推,持續(xù)對越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對元素需要比較為止。

了解了冒泡排序的原理之后,接下來通過一個(gè)案例來實(shí)現(xiàn)冒泡排序。

 

#include<stdio.h>

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

    int arr[5] = { 9,8,3,5,2 };

    int temp = 0;

    int i, j;

    printf("冒泡排序前:\n");

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

        printf("%d ", arr[i]);

 

    }

    printf("\n");

    for (i = 0; i < 5 - 1; i++) {

        for (j = 0; j < 5 - 1 - i; j++) {

            if (arr[j] > arr[j + 1]) {

                temp = arr[j];

                arr[j] = arr[j + 1];

                arr[j + 1] = temp;

            }

        }

    }

    printf("冒泡排序后:\n");

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

        printf("%d ", arr[i]);

    }

    printf("\n");

}

 

1588840310566_一維數(shù)組04.jpg


在上面的案例中,通過嵌套for循環(huán)實(shí)現(xiàn)了冒泡排序。其中,外層循環(huán)用來控制進(jìn)行多少輪比較,每一輪比較都可以確定1個(gè)元素的位置,由于最后1個(gè)元素不需要進(jìn)行比較,因此,外層循環(huán)的次數(shù)為數(shù)組的長度-1,內(nèi)層循環(huán)的循環(huán)變量用于控制每輪比較的次數(shù),在每次比較時(shí),如果前者小于后者,就交換兩個(gè)元素的位置。下面通過一張動(dòng)圖來演示冒泡排血的運(yùn)算過程。

1588840238636_1574231078139_冒泡排序動(dòng)圖.gif


以上我們介紹了C++一維數(shù)組的常見操作,希望對您有所幫助,如果通過學(xué)習(xí)C++快速提升自己找到工作,可以了解黑馬程序員C++培訓(xùn)課程。

猜你喜歡

什么是數(shù)組?


分享到:
在線咨詢 我要報(bào)名
和我們在線交談!