當前位置:才華齋>計算機>計算機二級>

2016計算機二級《C語言》模擬題及答案

計算機二級 閱讀(4.7K)

1. 若“int n; float f=13.8;”,則執行“n=(int)f%3”後,n的值是(A)

2016計算機二級《C語言》模擬題及答案

A、1

B、4

C、4.333333

D、4.6

“(int)f“表示將f中的值強制型別轉換為整型,即將13.8的小數部分舍掉,轉換為13;然後計算13%3,結果為1,再將結果賦給變數n,因此n的值為1

2. 以下對一維陣列a的正確說明是: D

A、char a(10);

B、 int a[];

C、int k=5,a[k];

D、char a[3]={‘a’,’b’,’c’};

詳見教材P143~144,一維陣列的定義、初始化

型別符 陣列名 [常量表達式]

型別符是指陣列中陣列元素的型別;陣列名要符合識別符號命名規則;常量表達式是指陣列的長度(陣列中包含元素的個數),其值只能是整數,不可以是變數,而且從1開始計數。

選項A,常量表達式只能放在中括號 [ ]中

選項B,只有在對陣列初始化(即賦值)的時候才可以省略陣列的長度,B中並未對a進行初始化。

選項C,常量表達式不能為變數。

3.以下能對一維陣列a進行初始化的語句是:( C )

A、int a[5]=(0,1,2,3,4,)

B、 inta(5)={}

C、 int a[3]={0,1,2}

D、 int a{5}={10*1}

詳見教材P145,一維陣列的定義、初始化

選項B,D,常量表達式只能放在中括號 [ ]中

選項A,陣列可以看做是若干個相同資料型別元素的有序集合,因此以集合的形式對其初始化,使用{ }對其初始化,選項A用了().

4.在C語言中對一維整型陣列的正確定義為 D 。

A、int a(10);

B、int n=10,a[n];

C、int n;a[n];

D、#define N 10

int a[N];

5、已知:int a[10]; 則對a陣列元素的正確引用是( D )。

A、a[10]

B、a[3.5]

C、a(5)

D、a[0]

詳見教材P144,陣列元素的引用

陣列名[下標]

引用陣列元素時,[ ]中的下標為邏輯地址下標,只能為整數,可以為變數,且從0開始計數

int a[10]表示定義了一個包含10個整型資料的陣列a,陣列元素的邏輯地址下標範圍為0~9,即a[0] 表示組中第1個元素; a[1] 表示組中第2個元素; a[2] 表示組中第3個元素; ......;a[9] 表示組中第10個元素.

選項A,超過了陣列a的邏輯地址下標範圍;

選項B,邏輯地址下標只能為整數

選項C,邏輯地址下標只能放在[ ]中

6.下列不正確的定義是(A )。

A、int *p=&i,i;

B、int *p,i;

i,*p=&i;

D、int i,*p;

選項A先定義一個整型指標變數p,然後將變數i的地址賦給p。然而此時還未定義變數i因此編譯器無法獲得變數i的地址。(A與C對比,選項C先定義變數i,則在記憶體中為i分配空間,因此i在記憶體空間的地址就可以確定了;然後再定義p,此時可以為p賦i的地址,C正確)

7. 若有說明:int n=2,*p=&n,*q=p,則以下非法的賦值語句是: (D )

A、p=q

B、*p=*q

C、n=*q

D、p=n

p,q同為整型指標變數,二者裡面僅能存放整型變數的地址。

選項A,q中為地址,因此可將此地址賦給p

選項B,*p表示p所指向物件n的內容,即一個整數;*q表示q所指向物件的內容,由於在定義q時為其初始化,將p中n的'地址給q,因此p中存放n的地址,*q表示q所指向物件n的內容.因此*p=*q 相當於 n=n;

選項C,n=*q 等價於n=n;

選項D,p中只能存放地址,不能將n中的整數值賦給p

8.有語句:int a[10],;則 B 是對指標變數p的正確定義和初始化。

A、int p=*a;

B、int *p=a;

C、int p=&a;

D、int *p=&a;

選項A,a是陣列名,不是指標變數名,因此不可用*標註陣列名a

選項C,a是陣列名,陣列名就是地址,無需再用地址符號。而且在定義指標變數p時,應在變數名前加*,標明p是指標變數

選項D,a是陣列名,陣列名就是地址,無需再用地址符號。

9.若有說明語句“int a[5],*p=a;”,則對陣列元素的正確引用是( C )。

A、a[p]

B、p[a]

C、*(p+2)

D、p+2

首先定義一個整型陣列a,a的長度為5,然後定義一個指標變數p,並同時對p進行初始化,將陣列a的地址賦給p。因此此時p中存放的陣列a的首地址,即陣列中第一個元素a[0]的地址。

對於陣列元素下標的引用(詳見p144), 一般形式 陣列名[下標] 其中下標為邏輯地址下標,從0開始計數,方括號中的下標可以是變數,可以是表示式,但結果一定要是整數。

選項A,p中存放的是地址,不是整數,不能做陣列元素的下標

選項B,a是陣列名,陣列名就是地址,不是整數,不能做陣列元素的下標

選項C,(重點!!!詳見p231~234) p+2表示指向同一陣列中的下兩個元素的地址,當前p指向a[0],則p+2表示a[2]的地址,因此*(p+2)表示a[2]的內容

10. 有如下程式

int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;

則數值為9的表示式是 B

A、 *P+9

B、 *(P+8)

C、 *P+=9

D、P+8

(重點!!!詳見p231~234)

首先定義一個整型陣列a,a的長度為5,然後定義一個指標變數P,並同時對P進行初始化,將陣列a的地址賦給P。因此此時P中存放的陣列a的首地址,即陣列中第一個元素a[0]的地址。

陣列中9對應的是a[8], 選項B,P+8表示陣列中後8個元素的地址,即a[8]的地址。*(P+8)則表示該地址內所存放的內容,即a[8]的值。

選項A,*P表示P所指向物件的內容,此時P指向a[0], *P即a[0]的值1. *P+9=1+9=10

選項C,*P表示P所指向物件的內容,此時P指向a[0], *P即a[0]的值。因此*P+=9 即*P =*P+9, 等價於a[0]=a[0]+9.

選項D,P+8表示陣列中後8個元素的地址,即a[8]的地址,而非a[8]中的值。

11 以下敘述中正確的是()

A.使用者自己定義的函式只能呼叫庫函式

B.實用的C語言源程式總是由一個或多個函式組成

C.不同函式的形式引數不能使用相同名稱的識別符號

D.在C語言的函式內部,可以定義區域性巢狀函式

參考答案:B

參考解析:A選項中,”使用者自己定義的函式只能呼叫庫函式”描述是不正確的,也可以呼叫自定義函式;C選項中,對於不同函式的形式引數可以使用相同名稱的識別符號;D選項中,關於函式的定義不可以巢狀,但函式的呼叫可以巢狀。因此B選項正確。

12 以下關於C語言資料型別使用的敘述中錯誤的是( )。

A.若要處理如“人員資訊”等含有不同型別的相關資料,應自定義結構體型別

B.若要儲存帶有多位小數的資料,可使用雙精度型別

C.若只處理“真”和“假”兩種邏輯值,應使用邏輯型別

D.整數型別表示的自然數是準確無誤差的

參考答案:C

參考解析:C語言中沒有邏輯型別,所以c錯誤。若要儲存帶有多位小數的資料,可以用單精度型別也可以用雙精度型別。處理包含不同型別的相關資料可以定義為結構體型別。整數型別可以無誤差的表示自然數。

13下面選項中關於編譯預處理的敘述正確的是

A.預處理命令列必須使用分號結尾

B.凡是以#號開頭的行,都被稱為編譯預處理命令列

C.預處理命令列不能出現在程式的最後一行

D.預處理命令列的作用域是到最近的函式結束處

參考答案:B

參考解析:本題考查預編譯的預編譯處理命令列,預處理命令列不能以分號結尾,所以A選項錯誤,預處理命令列可以出現在程式的最後一行,預處理命令列作用域是整個檔案。

14有以下程式

程式的輸出結果是

A.0B.1C.9D.10

參考答案:B

參考解析:本題考查巨集定義,巨集定義只是做個簡單的替換。執行SQR(k+m)/SQR(k+m)=k+m*k+m/k+m}k+m=15/2,a/=SQR(k+m)/SQR(k+1TI)的結果為1,選項B正確。

15 設--X樹共有150個結點,其中度為l的結點有l0個,則該---X樹中的葉子結點數為( )。

A.71B.70C.69D.不可能有這樣的二叉樹

參考答案:D

參考解析:在樹結構中,一個結點所擁有的後件個數稱為該結點的度,所有結點中最大的度稱為樹的度。對任何一棵二叉樹,度為0的結點總是比度為2的結點多一個。如果有一棵二叉樹,結點總數為l50,假設度為0的結點個數為n,則有n+10+n一1=150,n=70.5,由於結點個數必須是整數,所以不可能有題目中這樣的二叉樹。故選擇D選項。