141-150

注:以下問題的部分解析並非全部是自己原創,只是爲了便於以後複習,直接粘貼總結的答案,主要來源是七月在線中的解析部分。https://www.julyedu.com/question/selectAnalyze/kp_id/4/cate/C

1、下列while循環的次數是( )

void main()
{
while(int i = 0)
i–;
}
A 無限
B 0
C 1
D 5

解釋:選B

賦值語句“a=b”的返回值即賦值後a的值,int i = 0, 則返回值爲0, 故一次都不循環

2、 下面哪個指針表達式可以用來引用數組元素a[i][j][k][l]( )

A ((((a+i)+j)+k)+l)
B * (* (* (* (a+i)+j)+k)+l)
C (((a+i)+j)+k+l)
D ((a+i)+j+k+l)

解釋:選B

運算符 * 爲解引用運算符,若int p[5]爲一維數組,* (p+i)相當於p[i]即訪問下標爲i的元素。對應於本題,* (a+i)首先得到一個三維數組首地址,* (* (a+i)+j)得到一個二位數組的首地址,以此類推,* (* (* (* (a+i)+j)+k)+l)相當於訪問數組元素a[i][j][k][l]。

3、 根據下面遞歸、函數:調用函數Fun(2),返回值是多少( )

int Fun (int n)
{
if ( n = = 5)
return 2;
else
return 2*Fun (n+1);
}
A 2
B 4
C 8
D 16

解釋:選D

n = 2
Fun(2) = 2 * Fun(3) = 2* 2 * Fun(4) = 2* 2* 2* Fun(5) = 2* 2* 2* 2 = 16

4、 以下程序段的運行結果是( )

int main(void)
{
char aa[][3] = {‘a’,‘b’,‘c’,‘d’,‘e’,‘f’};
char (*p)[3] = aa;
p++;

printf("%c\n",**p);  
return 0;  

}
A b
B a
C c
D d

解釋:選C

char (*p)[3] = aa; p爲一個指向char[3] 的指針,p每加一個單位,實際上是移動一個數組的大小,即3個元素,故 ** p爲d
關於數組指針和指針數組的區別,可以參考我的另一篇文章
https://blog.csdn.net/weixin_44412429/article/details/95165898

5、在C語言中,下列( )是合法的標識符。

A 4x
B 1P234
C COUNT
D short

解釋:選C

標識符可以由任意的大小寫字母、下劃線和數字組成,但必須以字母或下劃線開頭,同時注意不能使用系統保留名稱作爲用戶標識符。選項A和B以數字開頭,而D選項中short爲系統保留名稱。

6、 C語言中的標識符只能有字母、數字和下劃線三種字符組成,且第一個字符( )

A 必須爲字母
B 必須爲字母或下劃線
C 必須不是字母或下劃線
D 必須爲下劃線

解釋:選B

7、下面程序的輸出是( )

int main(void)
{
enum team { my , your = 9 , his , her = his + 3};

printf("%d %d %d %d\n",my , your , his , her);  
return 0;  

}
A 0 9 10 13
B 0 8 11 12
C 0 8 10 12
D 0 8 12 9

解釋:選A

枚舉類型變量的成員,默認第一個成員值爲0,之後一次遞加1,若其中一個賦值,則之後依舊是遞加1。

8、以下程序

int main(int argc, char** argv)
{
int n = 0 , i;
for(i = 1 ; i < argc ; i++)
n = n * 10 + *argv[i]-‘0’;
printf("%d\n",n);
return 0;
}
經編譯鏈接生成可執行文件tt.exe,若運行時輸入以下命令行 tt 12 345 678,則程序運行的輸出結果是( )
A 136
B 12345
C 12345678
D 12

解釋:選A

題中命令行輸入的參數有4個,分別爲”tt”、”12”、”345”、”678”,故argc爲4,並且這4個參數傳給argv。在main函數中,第一次取下標爲1的參數,將其首字符轉換爲對應的整數,得到1,此時n=1;依次取下標分別爲2和3的參數,進行相應計算,分別得到n=13以及n=136,最後將n輸出得到136。

9、 若已定義:int a[9],*p = a; 並在以後的語句中未改變p的值,不能表示a[1]地址的表達式是( )

A ++p
B a+1
C p+1
D a++

解釋:選D

數組名不能作爲運算的左值被修改,即++a或者a++這種需要修改對象值的操作都是無法編譯通過的。

10、 若執行下面的程序時,從鍵盤上輸入5,則輸出是( )

int main(int argc, char** argv)
{
int x;
scanf("%d",&x);
if(x++ > 5)
printf("%d\n",x);
else
printf("%d\n",x–);
return 0;
}
A 7
B 4
C 6
D 5

解釋:選C

if(x++ > 5) 先進行 x > 5 爲假 然後 x 自增1 x = 6
跳轉到 printf("%d\n",x–); 先輸出x(6),然後x才自減。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章