1. 程式人生 > >陣列的定義和應用

陣列的定義和應用

陣列的定義和應用
對於有些資料,只用簡單的資料型別是不夠的,難以反映出資料的特點,也難以有效地進行處理,因此就需要用到陣列。
1基本概念
陣列:具有一定順序關係的若干相同型別資料的集合,為構造資料型別之一。
陣列名:為該資料集合起的一個名字 。
陣列元素:組成陣列的資料。屬同一資料型別,用陣列名和下標確定。
其具體關係如下,在這裡插入圖片描述
2.一維陣列的定義和引用
定義格式:資料型別 陣列名[常量表達式];
例如,int a[6];
其中陣列名為合法識別符號,常量表達式表示元素個數下標,從0開始,不能為變數。
一位陣列的引用:陣列必須先定義後引用;只能逐個引用陣列元素,不能一次引用整個陣列。
引用形式:陣列名[下標]
例如,

int a[5];
for(i=0;i<5;i++)
cout<<a[i];

3.一維陣列的初始化
初始化是指在定義陣列時,為陣列元素賦初值。
例如,int a[5]={1,2,3,4,5};
等價於:a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5
注:陣列不初始化,其元素值為隨機數。
可以只給部分陣列元素賦初值,其餘的自動賦以0值。
當全部陣列元素賦初值時,可不指定陣列長度。
一維陣列例題,
用簡單選擇法對10個數排序

#include <iostream>
using namespace std;
#define SIZE 10
void main()
{ int a[SIZE],i,j,k,x;
cout<<"Input "<< SIZE<<" numbers:\n";
for(i=0;i< SIZE;i++) cin>>a[i];
for(i=0;i< SIZE-1;i++) //找第i個最小數
{ k=i; //第i個最小數的下標是k
for(j=i+1;j< SIZE;j++)
if(a[j]<a[k]) k=j;
if(i!=k) //第i個最小數的下標不是i
{x=a[i];a[i]=a[k];a[k]=x;}
}
cout<<"The sorted numbers:\n";
for(i=0;i< SIZE;i++)
cout<<a[i]<<" ";
}

4.二維陣列的定義和引用
定義格式:資料型別 陣列名[常量表達式][常量表達式];
第一個表示式為行數,第二個為列數。二維陣列的元素存放順序為按行序優先,多維陣列元素存放順序為左右下標變化最快。
例如,a[3][4]即可理解為,
a[0] a[0][0] a[0][1] a[0][2] a[0][3]
a[1] a[1][0] a[1][1] a[1][2] a[1][3]
a[2] a[2][0] a[2][1] a[2][2] a[2][3]
二維陣列的引用形式:陣列名[下標] [下標]
5.二維陣列的初始化
二維陣列採用分行初始化,具體格式如下例,

此處的初始化結果為把array[0][0]初始化為4,array[0][1]初始化為2,array[1][0]初始化為5,array[2][0]初始化為6。

二維陣列例題,
將下列二維陣列行列元素互換,存到另一個二維陣列中。在這裡插入圖片描述

#include <iostream>
using namespace std;
void main()
{ int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
cout<<"array a:\n";
for(i=0;i<=1;i++)
{ for(j=0;j<=2;j++)
{ cout<<a[i][j];
b[j][i]=a[i][j];
}
cout<<endl;
}
cout<<"array b:\n";
for(i=0;i<=2;i++)
{ for(j=0;j<=1;j++)
cout<<b[i][j];
cout<<endl;
}
}