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!的結果。改...