2017年全國計算機等級c++考試試題

才智咖 人氣:2.43W

C++設計成給程式設計者更多的選擇,即使可能導致程式設計者選擇錯誤。下面是小編收集的全國計算機等級c++考試試題,希望大家認真閱讀!

2017年全國計算機等級c++考試試題

一、選擇題

1). 資料庫管理系統DBMS中用來定義模式、內模式和外模式的語言為( )

A.C

c

正確答案:C

2). 下面對於友元函式描述正確的是

A.友元函式的實現必須在類的內部定義

B.友元函式是類的成員函式

C.友元函式破壞了類的封裝性和隱藏性

D.友元函式不能訪問類的私有成員

正確答案:C

答案解析:友元函式的定義既可以在類內部進行,也可以在類外部進行。它提高了程式的執行效率,但破壞了類的封裝性和隱藏性,使得類的非成員函式可以訪問類的私有成員。

3). 下列連結串列中,其邏輯結構屬於非線性結構的是( )

A.二叉連結串列

B.迴圈連結串列

C.雙向連結串列

D.帶鏈的棧

正確答案:A

答案解析:在定義的連結串列中,若只含有一個指標域來存放下一個元素地址,稱這樣的連結串列為單鏈表或線性連結串列。帶鏈的棧可以用來收集計算機儲存空間中所有空閒的儲存結點,是線性表。在單鏈表中的結點中增加一個指標域指向它的直接前件,這樣的連結串列,就稱為雙向連結串列(一個結點中含有兩個指標),也是線性連結串列。迴圈連結串列具有單鏈表的特徵,但又不需要增加額外的存貯空間,僅對錶的連結方式稍做改變,使得對錶的處理更加方便靈活,屬於線性連結串列。二叉連結串列是二元樹的物理實現,是一種儲存結構,不屬於線性結構。答案為A選項。

4). 關於純虛擬函式,下列表述中正確的是( )。

A.純虛擬函式是沒有給出實現版本(即無函式體定義)的虛擬函式

B.純虛擬函式的宣告總是以″=0″結束

C.派生類必須實現基類的純虛擬函式

D.含有純虛擬函式的類不可能是派生類

正確答案:B

答案解析:純虛擬函式是在宣告虛擬函式時被″初始化″為O的'虛擬函式。純虛擬函式沒有函式體,純虛擬函式的作用是在基類中為其派生類保留一個函式名稱

5). 下列關於虛擬函式的描述中,正確的是( )。

A.虛擬函式是一個static型別的成員函式

B.虛擬函式是一個非成員函式

C.基類中採用virtual說明一個虛擬函式後,派生類中定義相同原型的函式時可不必加virtual說明

D.派生類中的虛擬函式與基類中相同原型的虛擬函式具有不同的引數個數或型別

正確答案:C

答案解析:在成員函式宣告的前面加上virtual關鍵字即把該函式宣告為虛擬函式。虛擬函式可以是另一個類的友元函式,但不是靜態成員函式。在派生類中可以重新定義從基類繼承下來的虛擬函式,在派生類中重新定義虛擬函式時,函式名、形參表和返回值型別必須保持不變。

二、填空題

給定程式的功能是求出能整除X且不是偶數的各整數,並放在陣列PP中,這些除數的個數由N返回。

例如,若X的值為30,則有4個數符合要求,它們是1,3,5,15。

注意:部分源程式給出如下

請勿改動主函式main和其他函式中的任何內容,僅在橫線上填入所編寫的若干表示式或語句。

試題程式:#include

void fun(int x, int pp[], int *n)

{

int i, j = 0;

for (i=1; i<=x; i+=2)

if ((x%i) == 0)

pp[j++] = ___1___;

*n = ___2___;

}

main()

{

int x, aa[1000], n, i;

printf("nPlease enter an integer number:n");

scanf("%d", &x);

fun(x, ___3___);

for (i=0; i  printf("%d ", aa[i]);

printf("n");

}

第1處填空:i

第2處填空:j

第3處填空:aa,