更新時間:2020-05-07 來源:黑馬程序員 瀏覽量:
一維數(shù)組的定義與初始化
一維數(shù)組指的是只有一個下標(biāo)的數(shù)組,它用來表示一組具有相同類型的數(shù)據(jù)。在C語言中,一維數(shù)組的定義方式如下所示:
類型說明符 數(shù)組名[常量表達式];
在上述語法格式中,類型說明符表示數(shù)組中所有元素的類型,常量表達式指的是數(shù)組的長度,也就是數(shù)組中存放元素的個數(shù)。
例
int array[5l;
上述代碼定義了一個數(shù)組,其中,int是數(shù)組的類型,aray是數(shù)組的名稱,方括號中的5是數(shù)組的長度。完成數(shù)組的定義后,只是對數(shù)組中的元素開辟了一塊內(nèi)存空間。這時,如果想使用數(shù)組操作數(shù)據(jù),還需要對數(shù)組進行初始化。數(shù)組初始化的常見的方式有3種,具體如下
(1)直接對數(shù)組中的所有元素賦值,示例代碼如下:
int i[5]={1,2,3,4,5};
上述代碼定義了一個長度為5的數(shù)組i,并且數(shù)組中元素的值依次為1、2、3、4、5。
(2)只對數(shù)組中的一部分元素賦值,示例代碼如下
int i[5]={1,2,3};
在上述代碼中,定義了一個int類型的數(shù)組,但在初始化時,只對數(shù)組中的前3個元素進行了賦值,其他元素的值會被默認(rèn)設(shè)置為
(3)對數(shù)組全部元素賦值,但不指定長度,示例代碼如下:
int i[]={1,2,3,4};
在上述代碼中,數(shù)組i中的元素有4個,系統(tǒng)會根據(jù)給定初始化元素的個數(shù)定義數(shù)組的長度,因此,數(shù)組i的長度為4。
注意
(1)數(shù)組的下標(biāo)是用方括號括起來的,而不是圓括號;
(2)數(shù)組名的命名同變量名的命名規(guī)則相同;
(3)數(shù)組定義中,常量表達式的值可以是符號常量,如下面的定義就是合法的。
int a[N]; //假設(shè)預(yù)編譯命令#define N 4,下標(biāo)是符號常量
一維數(shù)組的引用
在程序中,經(jīng)常需要訪問數(shù)組中的一些元素,這時可以通過數(shù)組名和下標(biāo)來引用數(shù)組中
的元素。一維數(shù)組元素的引用方式如下所示:
數(shù)組名 [下標(biāo)];
在上述方式中,下標(biāo)指的是數(shù)組元素的位置,數(shù)組元素的下標(biāo)是從0開始的。例如,引用數(shù)組X的第3個元素的方式為X[2]為了幫助大家更好地理解數(shù)組元素的引用榜下業(yè)通計一個室例來演示,如下所示:
#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]);
}
}
運行結(jié)果若下圖所示:
在上面案例中,首先定義了一個數(shù)組x,然后通過下標(biāo)的形式獲取到數(shù)組中的元素,最后將元素乘以2后輸出。
注意
數(shù)組的下標(biāo)都有一個范圍,即“0~[數(shù)組長度-1]”,假設(shè)數(shù)組的長度為6,其下標(biāo)范圍為0~5。當(dāng)訪問數(shù)組中的元素時,下標(biāo)不能超出這個范圍,否則程序會報錯。
一維數(shù)組的常見操作
數(shù)組在編寫程序時應(yīng)用非常廣泛,如經(jīng)常需要對數(shù)組進行遍歷、獲取最值、排序等操作靈活地使用數(shù)組對實際開發(fā)很重要。接下來針對一維數(shù)組的常見操作進行詳細(xì)的講解,具體如下。
1、一維數(shù)組的遍歷
在操作數(shù)組時,經(jīng)常需要依次訪問數(shù)組中的每個元素,這種操作稱作數(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]);
}
}
運行結(jié)果如下:
在上面案例中,首先定義了一個長度為5的數(shù)組X,然后定義了一個變量,由于數(shù)組的下標(biāo)范圍為0-4,因此可以將i的值作為下標(biāo),依次去訪問數(shù)組中的元素,并將元素的值輸出。
2、一維數(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;
}
運行結(jié)果如下
在上面案例找那個實現(xiàn)了獲取數(shù)組X最大值的功能。在第5行代碼中假定數(shù)組中的第1個元素為最大值,并將其賦值給nMax,在第7~13行代碼對數(shù)組中的其他元素進行遍歷,如果發(fā)現(xiàn)比mMax值大的元素,就將最大值nMx設(shè)置為這個元素的值,這樣,當(dāng)數(shù)組遍歷完成后,nMax中存儲的就是數(shù)組中的最大值。
3、一維數(shù)組的排序
在操作數(shù)組時,經(jīng)常需要對數(shù)組中的元素進行排序。接下來為大家介紹一種比較常見的排序算法一冒泡排序。在冒泡排序的過程中,不斷地比較數(shù)組中相鄰的兩個元素,較小者向上浮、較大者往下沉,整個過程和水中氣泡上升的原理相似,接下來,分步驟講解冒泡排序的整個過程,具體如下。
第1步,從第1個元素開始,將相鄰的兩個元素依次進行比較,直到最后兩個元素完成比較。如果前1個元素比后1個元素大,則交換它們的位置。整個過程完成后,數(shù)組中最后1個元素自然就是最大值,這樣也就完成了第1輪的比較。
第2步,除了最后1個元素,將剩余的元素繼續(xù)進行兩兩比較,過程與第1步相似,這樣就可以將數(shù)組中第二大的數(shù)放在倒數(shù)第2個位置。
第3步,依次類推,持續(xù)對越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對元素需要比較為止。
了解了冒泡排序的原理之后,接下來通過一個案例來實現(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");
}
在上面的案例中,通過嵌套for循環(huán)實現(xiàn)了冒泡排序。其中,外層循環(huán)用來控制進行多少輪比較,每一輪比較都可以確定1個元素的位置,由于最后1個元素不需要進行比較,因此,外層循環(huán)的次數(shù)為數(shù)組的長度-1,內(nèi)層循環(huán)的循環(huán)變量用于控制每輪比較的次數(shù),在每次比較時,如果前者小于后者,就交換兩個元素的位置。下面通過一張動圖來演示冒泡排血的運算過程。
以上我們介紹了C++一維數(shù)組的常見操作,希望對您有所幫助,如果通過學(xué)習(xí)C++快速提升自己找到工作,可以了解黑馬程序員C++培訓(xùn)課程。
猜你喜歡