對C語言數組的總結以及實例講解
數組(Array)是一系列相同類型的數據的集合,可以是一維的、二維的、多維的;最常用的是一維數組和二維數組,多維數組較少用到。
一、對數組的總結
1) 數組的定義格式為:
type arrayName[length]
type 為數據類型,arrayName 為數組名,length 為數組長度。 需要注意的是:
數組長度 length 最好是整數或者常量表達式,例如 10、20*4 等,這樣在所有編譯器下都能運行通過;如果 length 中包含了變量,例如 n、4*m 等,在某些編譯器下就會報錯。
數組在內存中佔用一段連續的空間,數組名錶示的是這段內存空間的首地址。
2) 訪問數組中某個元素的格式為:
arrayName[index]
index 為數組下標。注意 index 的值必須大於等於零,並且小於數組長度,否則會發生數組越界,出現意想不到的錯誤。
3) 可以對數組中的單個元素賦值,也可以整體賦值,例如:
// 對單個元素賦值
int a[3];
a[0] = 3;
a[1] = 100;
a[2] = 34;
// 整體賦值(不指明數組長度)
float b[] = { 23.3, 100.00, 10, 0.34 };
// 整體賦值(指明數組長度)
int m[10] = { 100, 30, 234 };
// 字符數組賦值
char str1[] = "";
// 將數組所有元素都初始化為0
int arr[10] = {0};
char str2[20] = {0};
二、數組應用舉例
【示例1】求一個整型數組中的'最大值和最小值。
#include
int main(){
int a[10] = {0}, max, min, i;
//從控制枱獲取用户輸入並賦值給數組元素
for(i=0; i<10; i++){
scanf("%d", &a[i]);
}
//假設a[0]是最大值也是最小值
max = a[0], min = a[0];
for(i=1; i<10; i++){
if(a[i] > max){
max = a[i];
}
if(a[i] < min){
min = a[i];
}
}
printf("The max is %d, The min is %dn", max, min);
return 0;
}
運行結果:
2 123 45 100 575 240 799 710 10 90↙
The max is 799, The min is 2
這段代碼有兩點需要説明:
1) 從控制枱獲取數組元素時,我們一次性輸入10個整數才按下回車鍵,而不是每輸入一個整數就按一次回車鍵,這正是利用了標準輸入緩衝區。
2) 要想求得數組中的最大值和最小值,就得循環比較數組中的所有元素,並設置兩個變量 max 和 min 來接收。以最大值為例,開始循環之前,先假設第0個元素是最大值(當然你也可以假設第1、2、3 個元素),然後用 max 和數組中剩餘的元素進行比較,如果某個元素的值比 max 大,就用這個元素的值替換 max 的值,等把所有元素遍歷完了,max 中就是最大值了。
關於排序和查找:
學完了數組,有兩個重要的知識點要求大家掌握,那就是排序(Sort)和查找(Search),比如:
給你 10 個打亂順序的整數,要能夠按照從小到大或者從大到小的順序輸出;
給定一個字符串 str1,以及一個子串 str2,要能夠判斷 str2 是否在 str1 中。