第4章陣列典型考題剖析

2022-02-20 03:02:17 字數 3515 閱讀 7326

第4章陣列

4.1 典型試題剖析

4.1.1 選擇題

【例1】以下能正確定義一維陣列的選項是答案:b

a)int numb) #define n 100 int num[n];

c)int num[0..100d) int n=100; int num[n];

【例2】以下不能正確定義二維陣列的選項是_______。答案:c

a) int a[2][2]=,;

c) int a[2][2]=, 2,3d) int a[2]=,};

考點:本例考查二維陣列的初始化。分析:

此型別為常考題型。可以用以下方法對二維陣列初始化:1.

分行給二維陣列賦初值。如static int a[3][4]=,,}。2.

可以將所有資料寫在乙個花括弧內,按陣列排列的順序對各元素賦初值。如static int a[3][4]=。3.

可以對部分元素賦初值。static int a[3][4]=,,},a答案中賦值正確。4.

如果對全部元素都賦初值(即提供全部初始資料),則定義陣列時對第一維的長度可以不指定,但第二維的長度不能省略,b、d答案中賦值正確。

【例3】以下程式的輸出結果是_______。答案:a

main()

,,};

printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);

}a) 0650 b) 1470 c) 5430 d) 輸出值不定

【例4】有以下程式,執行後輸出結果是答案:d

main()

, i=0,k=0;

while(i<7 && p[i]%2)

printf("%d\n", k); }

考點:本例考查一維陣列的運算。分析:

注意while的條件,要求p[i]%2為真,那麼偶數都排除,只剩下11,13,15,17。i=0,p[0]%2=11%2為真滿足條件,執行k=k+p[i]=0+p[0]=11,i=i+1=1;i=1且p[1]%2=13%2為真滿足條件,執行k=k+ p[i]=11+p[1]=11+13=24,i=i+1=2;i=2不滿足條件,迴圈不能執行,所以,最終迴圈僅執行2次,且k=24。

【例5】有以下程式,執行後輸出結果是_______。答案:c

main()

;int i,j,k=2;

for(i=0;i<3;i++)

}考點:本例考查二維陣列在for迴圈中的運算。

分析:首先本題考查二維陣列的定義,int m[3]=;是乙個3乘以3的矩陣。再注意for的條件,要求i<3,則迴圈進行三次應該輸出三個數字。

列印的值為m[k][i],k=2,i的值由0~2,所以應該列印m[2][0],m[2][1],m[2][2]。

【例6】有以下程式,程式執行後的輸出結果是_______。答案:b

main()

,,,};

int i,s=0;

for(i=0;i<4;i++) s+=aa[i][1];

printf("%d\n",s); }

a) 11b) 19c) 13d) 20

考點:本例同樣考查二維陣列在for迴圈中的運算。分析:首先本題考查二維陣列的定義:

int aa[4][4]=,,,};是乙個4乘4的矩陣。再注意for的條件,要求i<4,迴圈進行四次,s=aa[0][1] + aa[1][1] + aa[2][1] + aa[3][1]=2+6+9+2=19 。

【例7】下面程式的輸出結果是_______。答案:b

main()

考點:本例考查一維陣列在for迴圈中的運算。分析:

首先for在本題中雖然出現的次數很多,但是之間不是巢狀關係,而是按順序執行。本題要列印k的值,那麼我們要找與k有關的線索。k+=p[i] *2,而p[i ]=a[i *(i+1)],再a[i ]=i,所以,我們要從a[i ]開始分析。

a[i ]=i,for (i=0;i<10;i++)迴圈執行10次,給陣列賦值。再p[i ]=a[i *(i+1)],for (i=0;i<3;i++)又給p[i ]賦值,注意p[i ]只有三個元素。最後k是累加k=k+p[0]*2+p[1]*2+p[2]*2=k+a[0*(0+1)]*2+ a[1*(1+1)] *2+ a[2*(2+1)] *2= k+a[0]*2+a[2]*2+a[6]*2=0*2+2*2+6*2=5+16=21。

【例8】以下程式的輸出結果是_______。答案:a

main()

,, },i,j,s=0;

for(i=1;i<3;i++)

for(j=0;j<=i;j++) s+=a[i][j];

printf("%d\n",s); }

a) 18 b) 19 c) 20 d) 21

考點:本例考查二維陣列在for迴圈巢狀中的運算。分析:

本題要列印出s的值,首先由題意得s+=a[i][j],那麼肯定與陣列有關,再來分析與哪些陣列有關。由for(i=1;i<3;i++)得知i的值只為1,2,再由for(j=0;j<=i;j++)得知j的值只為0,1,2,所以s=a[1][0]+ a[1][1]+ a[2][0]+ a[2][1]+ a[2][2]=3+4+5+6=18。本題看上去有點複雜,實際上是考查迴圈的知識,另外用到陣列的初始化。

【例9】 以下程式執行後,輸出結果是_______。答案:b

main()

while(y>1);

for(j=i-1;j>=0;j--)

printf("%d",a[j]);

printf("\n"); }

a) 0000 b) 0010 c) 0110 d) 0100

4.1.2 填空題

【例1】以下程式的輸出結果是答案:10010

main()

while(y>=1);

for(j=i-1;j>=0;j--) /*逆序輸出*/

printf("%d",a[j]);

printf("\n"); }

考點:本例考查陣列與do-while迴圈。分析:

程式中的do-while迴圈採用除2取餘的方法將十進位制數y轉化成等值的二進位制數,並將係數順序存放在陣列a中,然後通過for迴圈將陣列a逆序輸出。顯然當y=18時,其等值的二進位制數是10010。

【例2】以下程式執行後的輸出結果是答案:1 3 7 15

main()

;for(i=1;i<=4;i++)

;for(i=0;i<3;i++)

for(j=i+1;j<3;j++) a[j][i]=0;

for(i=0;i<3;i++)

{ for(j=0;j<3;j++) printf("%d ",a[i][j]);

printf("\n

考點:本例考查二維陣列在for巢狀中的運算。分析:

for迴圈巢狀改變陣列某些值,下乙個迴圈巢狀列印修改後的陣列。陣列值這樣改變:當i=0,j迴圈兩次,分別是j=1和j=2;當i=1,j迴圈一次j=2,所以a[1][0]=0,a[2][0]=0,a[2][1]=0。

第4章串 陣列和廣義表練習題答案

填空題1.不包含任何字元 長度為0 的串稱為空串。2.由乙個或多個空格 僅由空格符 組成的串稱為空白串。3.設s a document 則strlen s 20的字元定位的位置為 3 4.子串的定位運算稱為串的模式匹配 被匹配的主串稱為目標串,子串稱為模式。5.設目標t abccdcdccbaa 模...

第5章陣列與廣義表

一 教學目的 掌握陣列的定義及順序表示與實現 掌握矩陣的壓縮儲存 廣義表的定義及儲存結構。二 教學重點 1 陣列的定義及其儲存 2 特殊矩陣的壓縮儲存 3 稀疏矩陣邏輯結構和儲存結構 4 廣義表的邏輯結構和儲存結構 5 陣列和廣義表的操作應用舉例 三 教學難點 1 矩陣的壓縮儲存 2 廣義表的儲存結...

第4章習題

第四章社會主義改造理論 一 單項選擇 1 中華人民共和國的成立,標誌中國進入b a 新民主主義社會 b 社會主義社會 c 共產主義社會 d 資本主義社會 2 新民主主義社會的經濟成分中,完全屬於社會主義性質的是 a a 國營經濟 b 合作社經濟 c 個體經濟 d 國家資本主義經濟 3 新民主主義社會...