程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 對C語言數組的總結以及實例講解

對C語言數組的總結以及實例講解

編輯:C語言基礎知識
數組(Array)是一系列相同類型的數據的集合,可以是一維的、二維的、多維的;最常用的是一維數組和二維數組,多維數組較少用到。

對數組的總結

1) 數組的定義格式為:
type arrayName[length]
type 為數據類型,arrayName 為數組名,length 為數組長度。 需要注意的是:
  • 數組長度 length 最好是整數或者常量表達式,例如 10、20*4 等,這樣在所有編譯器下都能運行通過;如果 length 中包含了變量,例如 n、4*m 等,在某些編譯器下就會報錯,我們已在《C語言變長數組》一節專門討論了這點。
  • 數組在內存中占用一段連續的空間,數組名表示的是這段內存空間的首地址。

2) 訪問數組中某個元素的格式為:
arrayName[index]
index 為數組下標。注意 index 的值必須大於等於零,並且小於數組長度,否則會發生數組越界,出現意想不到的錯誤,我們已在《C語言數組的靜態性、越界以及溢出》一節重點討論過。

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[] = "http://c.biancheng.net";

// 將數組所有元素都初始化為0
int arr[10] = {0};
char str2[20] = {0};

數組應用舉例

【示例1】求一個整型數組中的最大值和最小值。
#include <stdio.h>
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 %d\n", max, min);

    return 0;
}
運行結果:
2 123 45 100 575 240 799 710 10 90↙
The max is 799, The min is 2

這段代碼有兩點需要說明:
1) 從控制台獲取數組元素時,我們一次性輸入10個整數才按下回車鍵,而不是每輸入一個整數就按一次回車鍵,這正是利用了標准輸入緩沖區。

關於緩沖區的知識,我們已在《C語言緩沖區(緩存)詳解》和《結合C語言緩沖區談scanf()函數》兩節進行了詳細講解。

2) 要想求得數組中的最大值和最小值,就得循環比較數組中的所有元素,並設置兩個變量 max 和 min 來接收。以最大值為例,開始循環之前,先假設第0個元素是最大值(當然你也可以假設第1、2、3 個元素),然後用 max 和數組中剩余的元素進行比較,如果某個元素的值比 max 大,就用這個元素的值替換 max 的值,等把所有元素遍歷完了,max 中就是最大值了。

關於排序和查找

學完了數組,有兩個重要的知識點要求大家掌握,那就是排序(Sort)和查找(Search),比如:
  • 給你 10 個打亂順序的整數,要能夠按照從小到大或者從大到小的順序輸出;
  • 給定一個字符串 str1,以及一個子串 str2,要能夠判斷 str2 是否在 str1 中。

排序和查找的方法有很多種,我們把它們設置成了單獨的一章進行講解,請查看:C語言排序和查找
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved