C語言初階作業題 陣列

2021-10-10 15:41:32 字數 4537 閱讀 4721

1.關於一維陣列初始化,下面哪個定義是錯誤的?( )

a.int arr[10] = ;

b.int arr = ;

c.int arr = (1,2,3,4,5,6);

d.int arr[10] = ;

答案解析:

a:正確,10個int的一段連續空間,前6個位置被初始化為1,2,3,4,5,6,其他位置為0

b:正確,陣列中有6個空間,並被初始化為1,2,3,4,5,6

c:錯誤,陣列的初始化不能使用(),只能使用{}

d:正確,10個int型別的一段連續空間,每個位置都被初始化為0

因此,選擇c

2.定義了一維 int 型陣列 a[10] 後,下面錯誤的引用是:( )

a.a[0] = 1;

b.a[0] = 5*2;

c.a[10] = 2;

d.a[1] = a[2] * a[0];

答案解析:

陣列是相同型別的一段連續的空間,下標是從0開始的,比如:int array[n]

下標的範圍為[0,n),其中n位置不能儲存有效元素

a:正確,將0號位置設定為1

b:正確,將0號位置設定為10

c:錯誤,越界

d:正確,1號位置初始化為a[2]*a[0]之後的結果

因此,選擇c

3.若定義int a[2][3]=;則值為4的陣列元素是( )

a.a[0][0]

b.a[1][0]

c.a[1][1]

d.a[2][1]

答案解析:

int a[2][3]表示2行3類的二維陣列,根據其初始化知:

第0行即a[0]儲存3個元素: 1,2,3

第1行即a[1]儲存3個元素: 4,5,6

因此值為4的元素在第1行第0列

因此,選擇b

4.下面**的結果是:( )

#include

intmain()

;printf

("%d\n"

,sizeof

(arr));

return0;

}

a.4

b.16

c.20

d.5答案解析

對於int arr = 陣列,裡面總共有4個元素,(3,4)為逗號表示式,取後者,因此陣列中元素分別為:1,2,4,5

而sizeof(arr)求的是整個陣列所佔空間的大小,即:4sizeof(int)=44=16

因此,選擇b

5.下面**的結果是:( )

#include

intmain()

a.10 9

b.9 9

c.10 10

d.9 10

答案解析:

str字元陣列使用"hello bit"初始化,最終也會將』\0』放置到陣列中,因此陣列中總共有10個元素

sizeof(str):獲取陣列的總大小,10個元素,每個元素佔1個位元組,因此總共是10個位元組

strlen(str): 獲取字串中有效字元的個數,不算』\0』,因此總共9個有效字元

故上述printf會分別列印:10 9

因此,選擇a

6.給出以下定義:

char acx[

]= 「abcdefg」;

char acy=

;

以下說法正確的是( )

a.陣列acx和陣列acy等價

b.陣列acx和陣列acy的長度相同

c.陣列acx的長度大於陣列acy的長度

d.陣列acx的長度小於陣列acy的長度

答案解析:

acx和acy都是字元陣列,但是初始化表示式不同,acx和acy的區別如下:

acx:陣列中總共有8個元素,分別是:『a』,『b』,『c』,『d』,『e』,『f』,『g』,』\0』

acy:陣列中總共有7個元素,分別是:『a』,『b』,『c』,『d』,『e』,『f』,『g』

因此,選擇c

7.關於一維陣列描述不正確的是:( )

a.陣列的下標是從0開始的

b.陣列在記憶體中是連續存放的

c.陣列名表示首元素的位址

d.隨著陣列下標的由小到大,位址由高到低

答案解析:

a:正確,c語言規定,陣列的下標是從0開始的

b:正確,陣列的空間是一段連續的記憶體空間

c:正確,陣列名既可以表示陣列的位址,也可以表示陣列首元素的位址,兩個在數值上是一樣的,但是含義不一樣。

注意:陣列名只有在sizeof和&後才代表整個陣列,其它都表示首元素的位址

d:錯誤,這個要是系統而定,一般都是下標由小到大,位址由低到高

因此,選擇d

8.以下能對二維陣列a進行正確初始化的語句是:( )

a.int a[2]=,};

b.int a[3]=,};

c.int a[2][4]=,,};

d.int a[3]=,{},};

答案解析

對於二維陣列int array[m][n], 說明如下:

m和n都必須為常數,

m代表陣列有m行,n代表每行中有n個元素

其中m可以省略,省略後必須給出初始化表示式,編譯器從初始化結果中推斷陣列有多少行

n一定不能省略,因為n省略了就不能確定一行有多少個元素,也不能確定陣列有多少行

a:錯誤,引數上述說明

b:正確,參考上述說明

c:錯誤,陣列有兩行,但是初始化給了三行

d:錯誤,初始化不允許該種情況存在

因此,選擇b1.實現乙個對整形陣列的氣泡排序

/*

思路:遍歷陣列,對陣列中相鄰的兩個元素進行比較,如果需要公升序,前乙個資料大於後乙個資料時,交換兩個位置上的資料,直到所有的資料比較完,此時,最大的資料已經放在陣列的末尾。

除最大資料已經排好序外,其餘資料還是無需,對剩餘資料採用與上述類似的方式進行處理即可

*/void

bubblesort

(int array,

int size)}}

}/*優化:如果某次冒泡結束後,序列已經有序了,後面剩餘元素的冒泡可以省略

*/void

bubblesort

(int array,

int size)

}// 如果本次冒泡中,元素沒有交換,則本次開始冒泡時,資料已經有序了,後面的冒泡可以不用進行了if(

!ischange)

return;}

}

2.建立乙個整形陣列,完成對陣列的操作

1.實現函式init() 初始化陣列為全0

2.實現print() 列印陣列的每個元素

3.實現reverse() 函式完成陣列元素的逆置。

要求:自己設計以上函式的引數,返回值。

/*

*/void

init

(int arr,

int sz,

int set)

}void

print

(int arr,

int sz)

printf

("\n");

}void

reverse

(int arr,

int sz)

}

3.將陣列a中的內容和陣列b中的內容進行交換。(陣列一樣大)

**/

#include

intmain()

;int arr2[10]

=;int i =0;

printf

("請輸入10個數字:>");

for(i=

0; i<

10; i++

)printf

("請輸入10個數字:>");

for(i=

0; i<

10; i++

)//交換

for(i=

0; i<

10; i++

)return0;

}

C語言作業題 2

1 如輸入 z2009 ashanghaiz 則輸出 lenth 8 事例說明 從a到z的子串為shanghai,其長度是8.如輸入 z2009 ashanghaiz 則輸出 lenth 8 事例說明 從a到z的子串為shanghai,其長度是8.include int func1 char arr...

C語言作業題 5

1 設有下面的結構體和結構變數定義 struct student struct student studl 關於結構體型別變數賦值正確的是 a a studl.id 1001 studl.name tom b id 1001 studl.name tom c studl.id 1001 studl....

科銳C語言01 作業題

1.程式設計輸出字元0 9 a z a z的acsii碼的十進位制 八進位制和十六進製制的表示形式。include main include main 3.已知a 3,b 2,c 2.5,計算 float a b 3 int c的值。include main 4.編寫乙個程式輸出5!10!的結果。改...