C++利用數組(一維/二維)處理批量數據的方法
怎樣定義和引用一維數據
- 一維數組是數組中最簡單的,它的元素只需要用數組名加一個下標,就能唯一的地確定。
- 數組是一組有序數據的集合
- 數組中的每一個元素都屬于同一個數據類型
- C語言規(guī)定用方括號中的數字表示下標,如S[15]表示第15個元素
怎樣定義一維數組
要使用數組,必須在程序中先定義數組,即通知計算機:由哪些數據組成數組,數組中有多少元素,屬于哪個數據類型。否則計算機不會自動的把一批數據作為數組處理。例如,下面是對數組的定義:
int a[10] ;
它表示定義了一個整型數組, 數組名是a,此數組包含了 10個元素。數組的一般形式為:
類型說明符 數組名[常量表達式]
說明:
- 數組名的命名規(guī)則和變量名相同,遵循標識符命名規(guī)則。
- 在定義數組時莫須有指定數組中元素的個數,方括號中的常量表達式用來表示元素的個數,即數組的長度。
- 常量表達式中可以包括常量和符號常量,如 int a[3 + 5]是合法的的。
- 用 “int a[10];”定義了數組后a后,在內存中劃出了一片存儲空間(下圖所示),存放了一個有10個整型元素的數組,可以看到,用一個 “int a[10];”就相當于定義了10個簡單的整型變量,顯然簡單方便。

怎樣引用一維數組
在定義數組并對其各個元素賦值后,就可以引用數組中的元素。應注意:只能引用數組元素而不能一次整體調用整個數組全部元素的值。
引用數組元素的表示形式為:
數組名[下標]
例題: 對10個數組元素一次賦值為0,1,2,3 … 8,9,要求逆序輸出。
int main()
{
int i = 0;
int arr[10] = { 0 };
for (i = 0; i < 10; i++)
{
arr[i] = i;//賦值
}
for (i = 9; i >= 0; i--)
{
printf("%d ", arr[i]);//打印
}
printf("\n");
return 0;
}運行結果:

一維數組的初始化
在定義數組時對全部數組元素賦予初值。例如:
int a[10] = {0,1,2,3,4,5,6,7,8,9);也可只給數組中的一部分元素賦值。例如:
int a[10] = {0,1,2,3,4};
//定義a數組有10個元素,但花括號內只提供5個元素的初始值,
//系統(tǒng)自動給后面5個元素的初始值賦值為0如果想一個數組中全部元素為0,可以寫成:
int a[10] = {0};在對全部數組元素賦初始值時,由于數據的個數已經確定,因此可以不指定數組長度。例如:
int a[5] = {1,2,3,4,5};
//或者
int a[] = {1,2,3,4,5}; 一維數組程序舉例
例題1:用數組來處理求Fibonacci(斐波那契數列)問題。這個數列有以下特點:第1,2兩個數為1,1。從第3個數開始,該數是其前面兩個數之和。即該數列為1,1,2,3,5,8,13…,求其前20個數。
int main()
{
int i = 0;
int arr[20] = {1,1};//前倆項賦值為1
for (i = 2; i < 20; i++)
{
arr[i] = arr[i - 1] + arr[i - 2];
}
for (i = 0; i < 20; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}運行結果:

例題2(冒泡排序):有10個地區(qū)的面積,要求對它們按由小到大的順序排序。
int main()
{
int area[10] = { 0 };
int i = 0;
int j = 0;
int min = 0;
printf("請分別輸入10個田地的面積\n");
for (i = 0; i < 10; i++)
{
scanf("%d", &area[i]);
}
for (i = 0; i < 9; i++)//排升序(趟數)
{
for (j = 0; j < 9 - i; j++)//兩兩交換
{
if (area[j] > area[j + 1])
{
min = area[j + 1];//將較小的放臨時變量中
area[j + 1] = area[j];//將兩交換位置
area[j] = min;//將較小值賦值給較大值
}
}
}
for (i = 0; i < 10; i++)
{
printf("%d ", area[i]);
}
printf("\n");
return 0;
}運行結果:

怎樣定義和引用二維數組
前面已經提到,有的問題需要用二維數組來處理。例如3個小分隊,每隊有6名隊友,需要把這些隊友的工資用數組保存起來以備查。這就需要用到二維數組(如下圖)。如果建立一個數組Pay,它應當是二維的,第一維用來表示第幾個分隊,第二維用來表示第幾個隊員。

二維數組通常稱為 矩陣 。把二維數組寫成行(row)和列(column)的排列形式,可以有助于形象化的理解二維數組的邏輯結構。
怎樣定義二維數組
怎樣定義二維數組呢? 其基本概念與方法和一維數組相似。如:
float pay[3][6]
以上定義了一個float類型的二維數組,第1維有3個元素,第2維有6個元素。每一維的長度分別用一對方括號擴起來。 二維數組的一般定義形式如下: 類型說明符 數組名[常量表達式][常量表達式]
例如: float a[3][4],b[5][10];
C語言對二維數組采用這樣的定義方式,使得二維數組可以被看作一種特殊的一維數組:它的元素又是一個一維數組。例如可以把a看作一個一維數組,它有3個元素:a[0],a[1],a[2],每個元素又是一個包含4元素的一維數組,如圖所示

我們可以把a[0],a[1], a[2]看成三個一維數組的名字。上面定義的二維數組可以理解為定義了3個一維數組,即相當于:
float a[0][4],a[1][4],a[2][4]
此處把a[0],a[1],a[2]看作一維數組名。C語言的這種處理方法在數組初始化和用指針表示時顯得很方便,這在以后的使用中各位會經常體會到。
二維數組在內存中存放的順序
C語言中,二維數組中元素排放的順序是按行存放的,即在內存中先順序存放第一行的元素,接著存放第2行的元素。如下圖所示:

怎樣引用二維數組
二維數組元素的表示形式為:
數組名[下標][下標]
例如:a[2][3]表示a數組中序號為2的行中序號為3的列元素。下標應是整型表達式,如 a[2 - 1][2 * 2 - 1]形式。 數組元素可以出現在表示中也可以被賦值。
二維數組的初始化
分行給二維數組賦初始值。 這種賦初始值的方式比較直觀,把第一個花括號內的數據給第1行的元素,第2個花括號內的值給第2行的元素。例如:
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};可以將所有數據寫在一個花括號內,按數組元素在內存中的排列順序對各元素賦初始值。例如:
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12,};可以對部分元素賦初始值,例如:
int a[3][4] = {{1},{5},{9}};二維數組程序舉例
例題:有一個3 * 4的矩陣,要求編寫程序求出求字最大的那個元素的值,以及其所在的行號和列號。
int main()
{
int arr[3][4] = { {1,2,3,4},{5,55,7,8},{9,55,11,12} };
int i = 0;
int j = 0;
int max = 0;//最大值
int col = 0;//列坐標
int row = 0;//行坐標
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
{
if (max < arr[i][j])//將數組中的每一個元素和它進行比較找出最大的
{
max = arr[i][j];
row = i;
col = j;
}
}
}
printf("row = %d col = %d max = %d \n", row,col,max);
return 0;
}運行結果:

以上就是C++利用數組(一維/二維)處理批量數據的方法的詳細內容,更多關于C++利用數組處理數據的資料請關注腳本之家其它相關文章!
相關文章
C++計算任意權值的單源最短路徑(Bellman-Ford)
這篇文章主要為大家詳細介紹了C++計算任意權值的單源最短路徑,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-04-04
opencv配置的完整步驟(win10+VS2015+OpenCV3.1.0)
OpenCV是計算機視覺中經典的專用庫,其支持多語言、跨平臺,功能強大,這篇文章主要給大家介紹了關于opencv配置(win10+VS2015+OpenCV3.1.0)的相關資料,需要的朋友可以參考下2021-06-06

