二級(jí)C輔導(dǎo)教程及考點(diǎn)分析:第四章數(shù)組

字號(hào):

數(shù) 組
     數(shù)組在程序設(shè)計(jì)中,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來(lái)。這些按序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組。在C語(yǔ)言中, 數(shù)組屬于構(gòu)造數(shù)據(jù)類型。一個(gè)數(shù)組可以分解為多個(gè)數(shù)組元素,這些數(shù)組元素可以是基本數(shù)據(jù)類型或是構(gòu)造類型。因此按數(shù)組元素的類型不同,數(shù)組又可分為數(shù)值數(shù)組、字符數(shù)組、指針數(shù)組、結(jié)構(gòu)數(shù)組等各種類別。
     本章介紹數(shù)值數(shù)組和字符數(shù)組,其余的在以后各章陸續(xù)介紹。數(shù)組類型說(shuō)明 在C語(yǔ)言中使用數(shù)組必須先進(jìn)行類型說(shuō)明。 數(shù)組說(shuō)明的一般形
     式為: 類型說(shuō)明符 數(shù)組名 [常量表達(dá)式],……; 其中,類型說(shuō)明符是任一種基本數(shù)據(jù)類型或構(gòu)造數(shù)據(jù)類型。 數(shù)組名是用戶定義的數(shù)組標(biāo)識(shí)符。 方括號(hào)中的常量表達(dá)式表示數(shù)據(jù)元素的個(gè)數(shù),也稱為數(shù)組的長(zhǎng)度。
     例如:
     int a[10]; 說(shuō)明整型數(shù)組a,有10個(gè)元素。
     float b[10],c[20]; 說(shuō)明實(shí)型數(shù)組b,有10個(gè)元素,實(shí)型數(shù)組c,有20個(gè)元素。
     char ch[20]; 說(shuō)明字符數(shù)組ch,有20個(gè)元素。
     對(duì)于數(shù)組類型說(shuō)明應(yīng)注意以下幾點(diǎn):
     1.數(shù)組的類型實(shí)際上是指數(shù)組元素的取值類型。對(duì)于同一個(gè)數(shù)組,其所有元素的數(shù)據(jù)類型都是相同的。
     2.數(shù)組名的書寫規(guī)則應(yīng)符合標(biāo)識(shí)符的書寫規(guī)定。
     3.數(shù)組名不能與其它變量名相同,例如:
     void main()
     {
     int a;
     float a[10];
     ……
     }
     是錯(cuò)誤的。
     4.方括號(hào)中常量表達(dá)式表示數(shù)組元素的個(gè)數(shù),如a[5]表示數(shù)組a有5個(gè)元素。但是其下標(biāo)從0開始計(jì)算。因此5個(gè)元素分別為a[0],a[1],a[2],a[3],a[4]。
     5.不能在方括號(hào)中用變量來(lái)表示元素的個(gè)數(shù), 但是可以是符號(hào)常數(shù)或常量表達(dá)式。例如:
     #define FD 5
     void main()
     {
     int a[3+2],b[7+FD];
     ……
     }
     是合法的。但是下述說(shuō)明方式是錯(cuò)誤的。
     void main()
     {
     int n=5;
     int a[n];
     ……
     }
     6.允許在同一個(gè)類型說(shuō)明中,說(shuō)明多個(gè)數(shù)組和多個(gè)變量。
     例如: int a,b,c,d,k1[10],k2[20];
     數(shù)組元素的表示方法
     數(shù)組元素是組成數(shù)組的基本單元。數(shù)組元素也是一種變量, 其標(biāo)識(shí)方法為數(shù)組名后跟一個(gè)下標(biāo)。 下標(biāo)表示了元素在數(shù)組中的順序號(hào)。數(shù)組元素的一般形式為: 數(shù)組名[下標(biāo)] 其中的下標(biāo)只能為整型常量或整型表達(dá)式。如為小數(shù)時(shí),C編譯將自動(dòng)取整。例如,a[5],a[i+j],a[i++]都是合法的數(shù)組元素。 數(shù)組元素通常也稱為下標(biāo)變量。必須先定義數(shù)組, 才能使用下標(biāo)變量。在C語(yǔ)言中只能逐個(gè)地使用下標(biāo)變量, 而不能一次引用整個(gè)數(shù)組。 例如,輸出有10 個(gè)元素的數(shù)組必須使用循環(huán)語(yǔ)句逐個(gè)輸出各下標(biāo)變量:
     for(i=0; i<10; i++)  printf("%d",a[i]); 而不能用一個(gè)語(yǔ)句輸出整個(gè)數(shù)組,下面的寫法是錯(cuò)誤的: printf("%d",a);
     void main()
     {
     int i,a[10];
     for(i=0;i<10;i++)
     a[i++]=2*i+1;
     for(i=9;i>=0;i--)
     printf("%d",a[i]);
     printf("\n%d %d\n",a[5.2],a[5.8]);
     }
       本例中用一個(gè)循環(huán)語(yǔ)句給a數(shù)組各元素送入奇數(shù)值,然后用第二個(gè)循環(huán)語(yǔ)句從大到小輸出各個(gè)奇數(shù)。在第一個(gè) for語(yǔ)句中,表達(dá)式3省略了。在下標(biāo)變量中使用了表達(dá)式i++,用以修改循環(huán)變量。當(dāng)然第二個(gè)for語(yǔ)句也可以這樣作, C語(yǔ)言允許用表達(dá)式表示下標(biāo)。 程序中最后一個(gè)printf語(yǔ)句輸出了兩次a[5]的值, 可以看出當(dāng)下標(biāo)不為整數(shù)時(shí)將自動(dòng)取整。數(shù)組的賦值給數(shù)組賦值的方法除了用賦值語(yǔ)句對(duì)數(shù)組元素逐個(gè)賦值外, 還可采用初始化賦值和動(dòng)態(tài)賦值的方法。數(shù)組初始化賦值數(shù)組初始化賦值是指在數(shù)組說(shuō)明時(shí)給數(shù)組元素賦予初值。 數(shù)組初始化是在編譯階段進(jìn)行的。這樣將減少運(yùn)行時(shí)間,提高效率。