- 相關(guān)推薦
2017年計(jì)算機(jī)二級(jí)《C++》預(yù)測(cè)試題
一、選擇題
1關(guān)于運(yùn)算符重載,下列表述中正確的是( )。
A.c++已有的任何運(yùn)算符都可以重載
B.運(yùn)算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型
C.在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型
D.可以通過(guò)運(yùn)算符重載來(lái)創(chuàng)建c++中原來(lái)沒(méi)有的運(yùn)算符
參考答案:C
參考解析:重載運(yùn)算符的規(guī)則如下:①c++不允許用戶自己定義新的運(yùn)算符,只能對(duì)已有的c++運(yùn)算符進(jìn)行重載;②c++不能重載的運(yùn)算符只有5 個(gè);③重載不能改變運(yùn)算符運(yùn)算對(duì)象的個(gè)數(shù);④重載不能改變運(yùn)算符的優(yōu)先級(jí)和結(jié)合性;⑤重載運(yùn)算符的函數(shù)不能有默認(rèn)的參數(shù);⑥重載的運(yùn)算符必須和用戶定義的自定義類型的對(duì)象一起使用,至少應(yīng)有一個(gè)是類對(duì)象,即不允許參數(shù)全部是c++的標(biāo)準(zhǔn)類型。故本題答案為c。
2在類的定義中,用于為對(duì)象分配內(nèi)存空間,對(duì)類的數(shù)據(jù)成員進(jìn)行初始化并執(zhí)行其他內(nèi)部管理操作的函數(shù)是( )。
A.友元函數(shù)B.虛函數(shù)C.構(gòu)造函數(shù)D.析構(gòu)函數(shù)
參考答案:C
參考解析:構(gòu)造函數(shù)在創(chuàng)建對(duì)象時(shí)系統(tǒng)自動(dòng)調(diào)用,其功能是使用給定的值將對(duì)象初始化。
3軟件設(shè)計(jì)中模塊劃分應(yīng)遵循的準(zhǔn)則是( )。
A.低內(nèi)聚低耦合B.高內(nèi)聚低耦合C.低內(nèi)聚高耦合D.高內(nèi)聚高耦合
參考答案:B
參考解析:軟件沒(méi)計(jì)中模塊劃分應(yīng)遵循的準(zhǔn)則是高內(nèi)聚低偶合、模塊大小規(guī)模適當(dāng)、模塊的依賴關(guān)系適當(dāng)?shù)。模塊的劃分應(yīng)遵循一定的要求,以保證模塊劃分合理,并進(jìn)一步保證以此為依據(jù)開(kāi)發(fā)出的軟件系統(tǒng)可靠性強(qiáng),易于理解和維護(hù)。模塊之間的耦合應(yīng)盡可能的低,模塊的內(nèi)聚度應(yīng)盡町能的高。
4如果類A被說(shuō)明成類B的友元,則( )。
A.類A的成員即類B的成員
B.類B的成員即類A的成員
C.類A的成員函數(shù)不得訪問(wèn)類B的成員
D.類B不一定是類A的友元
參考答案:D
參考解析:本題考查的是友元類的定義:類A為類B的友元類,則類A的所有成員函數(shù)都是類8的友元函數(shù),但反之則不一定成立。
5有如下類定義:
class Foo
{
public:
Foo(int v):value(V){}//①
~Foo(){}//②
private:
Foo(){}//③
int value=0://④
};
其中存在語(yǔ)法錯(cuò)誤的行是( )。
A.①B.②C.③D.④
參考答案:D
參考解析:本題考查對(duì)象的初始化,類的數(shù)據(jù)成員是不能在聲明類時(shí)初始化的,所以本題答案為D。
6下面關(guān)于數(shù)組的描述錯(cuò)誤的是( )。
A.在C++語(yǔ)言中數(shù)組的名字就是指向該數(shù)組第一個(gè)元素的指針
B.長(zhǎng)度為n的數(shù)組,下標(biāo)的范圍是0~n-1
C.數(shù)組的大小必須在編譯時(shí)確定
D.數(shù)組只能通過(guò)值參數(shù)和引用參數(shù)兩種方式傳遞給函數(shù)
參考答案:D
參考解析:本題考查的是數(shù)組的基本使用,數(shù)組還可以通過(guò)對(duì)應(yīng)的指針調(diào)用傳遞參數(shù),其余選項(xiàng)的說(shuō)法都是正確的。
7運(yùn)算符重載是對(duì)已有的運(yùn)算符賦予多重含義,因此( )。
A.可以對(duì)基本類型(如int類型)的數(shù)據(jù),重新定義“+”運(yùn)算符的含義
B.可以改變一個(gè)已有運(yùn)算符的優(yōu)先級(jí)和操作數(shù)個(gè)數(shù)
C.只能重載c++中已經(jīng)有的運(yùn)算符,不能定義新運(yùn)算符
D.C++中已經(jīng)有的所有運(yùn)算符都可以重載
參考答案:C
參考解析:重載運(yùn)算符的規(guī)則如下:①c++不允許用戶自己定義新的運(yùn)算符,只能對(duì)已有的c++運(yùn)算符進(jìn)行重載;②c++不能重載的運(yùn)算符只有5 個(gè);③重載不能改變運(yùn)算符運(yùn)算對(duì)象的個(gè)數(shù);④重載不能改變運(yùn)算符的優(yōu)先級(jí)和結(jié)合性;⑤重載運(yùn)算符的函數(shù)不能有默認(rèn)的參數(shù);⑥重載的運(yùn)算符必須和用戶定義的自定義類型的對(duì)象一起使用,至少應(yīng)有一個(gè)是類對(duì)象,即不允許參數(shù)全部是c++的標(biāo)準(zhǔn)類型。故本題答案為c。
8有如下類和對(duì)象的定義:
class Constants{
public:
static double getPI(){return 3.1416;}
};
Constants constants:
下列各組語(yǔ)句中,能輸出3.1416的是( )。
A.cout
參考答案:D
參考解析:本題考查靜態(tài)成員函數(shù)。靜態(tài)成員函數(shù)由于沒(méi)有this指針,所以不能訪問(wèn)本類中的非靜態(tài)成員。引用靜態(tài)成員函數(shù)有2種方式,一種是直接使用類來(lái)引用,即Constants::getpI();另一種是使用對(duì)象來(lái)引用,即constants.getPI()。所以本題答案為D。
9程序流程圖中帶有箭頭的線段表示的是( )。
A.圖元關(guān)系B.數(shù)據(jù)流C.控制流D.調(diào)用關(guān)系
參考答案:C
參考解析:在數(shù)據(jù)流圖中,用標(biāo)有名字的箭頭表示數(shù)據(jù)流。在程序流程圖中,用標(biāo)有名字的箭頭表示控制流。所以選擇C。
10下列程序的執(zhí)行結(jié)果為( )。
#include
void main()
{
int a=3,b=0;
int*P =&a;
b=+a++;
cout<<*P<<”,”<
}
A.3,4B.4,3C.3,3D.4,4
參考答案:B
參考解析:*P為所指對(duì)象a的值,語(yǔ)句“b=+a++;”等價(jià)于“b=b+a;a=a+1;”。
11對(duì)長(zhǎng)度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(rt一1)/2的排序方法是( )。
A.快速排序B.冒泡排序C.直接插入排序D.堆排序
參考答案:D
參考解析:除了堆排序算法的比較次數(shù)是0(nlog2n),其他的都是n(n—1)/2。
12字面常量42、4.2、42L的數(shù)據(jù)類型分別是( )。
A.long,double、intB.lon9、float、intC.int、double、longD.int、float、long
參考答案:C
參考解析:本題考查整型變量的類型和浮點(diǎn)變量的類型,42默認(rèn)為int型數(shù)據(jù),42后面加上L后,表示long型數(shù)據(jù),4.2默認(rèn)為double型數(shù)據(jù)。
13下列敘述中正確的是( )。
A.棧是“先進(jìn)先出”的線性表
B.隊(duì)列是“先進(jìn)后出”的線性表
C.循環(huán)隊(duì)列是非線性結(jié)構(gòu)
D.有序線性表既可以采用順序存儲(chǔ)結(jié)構(gòu),也可以采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
參考答案:D
參考解析:棧是先進(jìn)后出的線性表,所以A錯(cuò)誤;隊(duì)列是先進(jìn)先出的線性表,所以B錯(cuò)誤;循環(huán)隊(duì)列是線性結(jié)構(gòu)的線性表,所以C錯(cuò)誤。
14不能作為重載函數(shù)的調(diào)用的依據(jù)是( )。
A.參數(shù)個(gè)數(shù)B.參數(shù)類型C.函數(shù)類型D.函數(shù)名稱
參考答案:D
參考解析:所謂重載函數(shù)是指同一個(gè)函數(shù)名可以對(duì)應(yīng)多個(gè)函數(shù)的實(shí)現(xiàn),編譯器會(huì)根據(jù)參數(shù)個(gè)數(shù)、參數(shù)類型和函數(shù)返回值類型不同而自動(dòng)調(diào)用相應(yīng)的函數(shù)。
15下列語(yǔ)句中,錯(cuò)誤的是( )。
A.const int buffer=256;
B.const double*point;
C.int const buffer=256;
D.double*eonst point:
參考答案:D
參考解析:const是一個(gè)C++關(guān)鍵字,用于限定不允許改變的變量。選項(xiàng)B是指向常量的指針,定義時(shí)可以不初始化;選項(xiàng)D是指針常量,定義時(shí)必須初始化。故答案為D。
16下列運(yùn)算符中,在c++語(yǔ)言中不能重載的是( )。
A.*B.>=C.::D./
參考答案:C
參考解析:不能被重載的運(yùn)算符還包括:“.”、“.*”、“->*”和“?:”。
17有如下說(shuō)明:
int a[10]={1,2,3,4,5,6,7,8,9,10},* P=a; 則數(shù)值為9的表達(dá)式是( )。
A.*P+9B.木(P+8)C.*P+=9D.P+8
參考答案:B
參考解析:本題考查指向數(shù)組的指針,本題中指針變量P指向數(shù)組a,那么*P的值就是1,即表示數(shù)組的第一個(gè)元素,那么數(shù)值為9的表達(dá)式就是將指針向后移動(dòng)8個(gè)地址,即P+8指向的是數(shù)組元素值為9,所以數(shù)值為9的表達(dá)式是*(P+8)。
18執(zhí)行下列語(yǔ)句段后,輸出字符“*”的個(gè)數(shù)是( )。
for(int i=50;i>1;i-=2)Cout<<'*':
A.24B.25C.26D.50
參考答案:B
參考解析:本題考查for循環(huán)語(yǔ)句,題目中每執(zhí)行完循環(huán)體后,i都會(huì)減2.那么只有50到2之間的偶數(shù)才能輸出“*”,所以總共輸出25次。
19算法的有窮性是指( )。
A.算法程序的運(yùn)行時(shí)間是有限的
B.算法程序所處理的數(shù)據(jù)量是有限的
C.算法程序的長(zhǎng)度是有限的
D.算法只能被有限的用戶使用
參考答案:A
參考解析:算法原則上能夠精確地運(yùn)行,而且人們用筆和紙做有限次運(yùn)算后即可完成。有窮性是指算法程序的運(yùn)行時(shí)間是有限的。
20下面關(guān)于break語(yǔ)句的描述中,不正確的是( )。
A.break可以用于循環(huán)體內(nèi)
B.break語(yǔ)句可以在for循環(huán)語(yǔ)句中出現(xiàn)多次
C.break語(yǔ)句可以在switch語(yǔ)句中出現(xiàn)多次
D.break語(yǔ)句可用于if條件判斷語(yǔ)句內(nèi)
參考答案:D
參考解析:本題考查的是break語(yǔ)句的使用,break可以結(jié)束switch語(yǔ)句和for循環(huán)語(yǔ)句,但是不能使用在條件判斷語(yǔ)句內(nèi)。
21有如下類定義:
class Point
{
int xx.yy;
public:
Point():xx(0),yy(0){}
Point(int x,int Y=0):xx(X),YY(Y){}
};
若執(zhí)行語(yǔ)句
Point a(2),b[3],幸c[4];
則Point類的構(gòu)造函數(shù)被調(diào)用的次數(shù)是( )。
A.2次B.3次C.4次D.5次
參考答案:C
參考解析:本題考查默認(rèn)構(gòu)造函數(shù)和帶參數(shù)的構(gòu)造函數(shù),題目中定義一個(gè)對(duì)象a(2)以及對(duì)象數(shù)組b[3],共執(zhí)行4次構(gòu)造函數(shù),對(duì)象指針不調(diào)用構(gòu)造函數(shù)。所以本題答案為c。
22有如下程序:
#include
using namespace std;
class Basel
{
public:
BaseI(int D.{cout<
一Basel(){}
};
class Base2
{
public:
Base2(int D.{tout<
~Base2(){}
};
class Derived:public Basel,Base2
{
public:
Derived(int a,int b,int c,int D.:Basel(B.,Base2(A.,bl(D.,b2(C.{}
private:
int bl:
int b2:
};
int main()
{
Derived d(1,2,3,4);
return 0;
}
執(zhí)行這個(gè)程序的輸出結(jié)果是( )。
A.1234B.2134C.12D.21
參考答案:D
參考解析:本題考查派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù),在定義一個(gè)派生類的對(duì)象時(shí),先調(diào)用基類的構(gòu)造函數(shù),然后再執(zhí)行派生類的構(gòu)造函數(shù),對(duì)象釋放時(shí),先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù)。本題中定義一個(gè)派生類對(duì)象時(shí),分別調(diào)用基類的構(gòu)造函數(shù),所以分別輸出21。
23以下敘述正確的是( )。
A.函數(shù)可以嵌套定義但不能嵌套調(diào)用
B.函數(shù)既可以嵌套調(diào)用也可以嵌套定義
C.函數(shù)既不可以嵌套定義也不可以嵌套調(diào)用
D.函數(shù)可以嵌套調(diào)用但不可以嵌套定義
參考答案:D
參考解析:在c++語(yǔ)言中,所有的函數(shù)都是平行的,即在定義函數(shù)時(shí)是互相獨(dú)立的,一個(gè)函數(shù)并不從屬于另一個(gè)函數(shù),即函數(shù)不能嵌套定義,但可以互相調(diào)用。但是不能調(diào)用main()函數(shù)。
24必須用一對(duì)大括號(hào)括起來(lái)的程序段是( )。
A.switCh語(yǔ)句中的Case標(biāo)號(hào)語(yǔ)句
B.if語(yǔ)句的分支
C.循環(huán)語(yǔ)句的循環(huán)體
D.函數(shù)的函數(shù)體
參考答案:D
參考解析:本題考查c++基本控制結(jié)構(gòu),A、B、C三個(gè)選項(xiàng)中的大括號(hào)不是必須的,而D選項(xiàng)中的函數(shù)體必須使用大括號(hào)。
25軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應(yīng)用軟件的是( )。
A.學(xué)生成績(jī)管理系統(tǒng)
B.C語(yǔ)言編譯程序
C.UNIX操作系統(tǒng)
D.數(shù)據(jù)庫(kù)管理系統(tǒng)
參考答案:A
參考解析:軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件、支撐軟件。操作系統(tǒng)、編譯程序、匯編程序、網(wǎng)絡(luò)軟件、數(shù)據(jù)庫(kù)管理系統(tǒng)都屬于系統(tǒng)軟件。所以B、C、D都是系統(tǒng)軟件,只有A是應(yīng)用軟件。
26下面程序的運(yùn)行結(jié)果為( )。
#include
void main()
{
for(int a=0,x=0;!x&&a<=10;a++)
{
a++:
}
cout<
}
A.10B.1lC.12D.0
參考答案:C
參考解析:在進(jìn)入最后一次循環(huán)時(shí)a=10,在循環(huán)體內(nèi)執(zhí)行“a++;”后a=11,執(zhí)行完該次循環(huán)體計(jì)算for循環(huán)的增量部分后a=12小于l0,循環(huán)結(jié)束。
27有如下程序:
#include
using namespace std;
int i=1;
class Fun{
public:
static int i;
int value(){return i—l;}
int value()const{return i+1;}
};
int Fun::i=2;
int main(){
int i=3;
Fun funl;
const Fun fun2:
__________________
return 0;
}
若程序的輸出結(jié)果是:
123
則程序中下畫(huà)線處遺漏的語(yǔ)句是( )。
A.cout<
參考答案:A
參考解析:本題考查構(gòu)造函數(shù)、常成員函數(shù)和靜態(tài)數(shù)據(jù)成員。外部同名的變量賦值,不能改變類的靜態(tài)變量值,所以Fun對(duì)象里的i值為2,所以本題答案為A。
28下列有關(guān)模板的敘述中,正確的是( )。
A.函數(shù)模板不能含有常規(guī)形參
B.函數(shù)模板的一個(gè)實(shí)例就是一個(gè)函數(shù)定義
C.類模板的成員函數(shù)不能是模板函數(shù)
D.用類模板定義對(duì)象時(shí),絕對(duì)不能省略模板實(shí)參
參考答案:B
參考解析:本題考查函數(shù)模板和類模板的基礎(chǔ)知識(shí),所以本題答案為B。
29運(yùn)算符重載時(shí)不需要保持的性質(zhì)是( )。
A.操作數(shù)個(gè)數(shù)B.操作數(shù)類型C.優(yōu)先級(jí)D.結(jié)合性
參考答案:B
參考解析:重載運(yùn)算符的規(guī)則如下:①c++不允許用戶自己定義新的運(yùn)算符,只能對(duì)已有的c++運(yùn)算符進(jìn)行重裁;②c++不能重載的運(yùn)算符只有5 個(gè);③重載不能改變運(yùn)算符運(yùn)算對(duì)象的個(gè)數(shù);④重載不能改變運(yùn)算符的優(yōu)先級(jí)和結(jié)合性;⑤重載運(yùn)算符的函數(shù)不能有默認(rèn)的參數(shù);⑥重載的運(yùn)算符必須和用戶定義的自定義類型的對(duì)象一起使用,至少應(yīng)有一個(gè)是類對(duì)象,即不允許參數(shù)全部是c++的標(biāo)準(zhǔn)類型。所以答案為B。
30下列程序的輸出結(jié)果為( )。
#include
{
if(n<1)return l;
else return n+time(n一1); return 0;
}
void main() {
cout<
}
A.0B.10C.15D.16
參考答案:D
參考解析:本題考查的是遞歸函數(shù)的使用,題中遞歸函數(shù)的結(jié)束條件為n
31有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass(int i=0){cout<<1;}
MyClass(const MyClass&x){cout<<2;}
MyClass&operator=(const MyClass&x){cout<<3;retum$this;}
~MyClass()}cout<<4;}
};
int main()
{
MyClass objl(1),obj2(2),obj3(objl);
retum 0;
{
執(zhí)行這個(gè)程序的輸出結(jié)果是( )。
A.112444B.11114444C.121444D.11314444
參考答案:A
參考解析:本題:考查構(gòu)造函數(shù)和復(fù)制構(gòu)造函數(shù)以及重載運(yùn)算符。本題中先后定義了兩個(gè)對(duì)象obj1,obj2,依次輸出口,然后定義了對(duì)象obj3,凋用復(fù)制構(gòu)造函數(shù),輸出2,最后執(zhí)行三次析構(gòu)函數(shù),輸出444。
32在下列模式中,能夠給出數(shù)據(jù)庫(kù)物理存儲(chǔ)結(jié)構(gòu)與物理存取方法的是( )。
A.外模式B.內(nèi)模式C.概念模式D.邏輯模式
參考答案:B
參考解析:數(shù)據(jù)庫(kù)系統(tǒng)的蘭級(jí)模式是概念模式、外模式和內(nèi)模式。概念模式是數(shù)據(jù)庫(kù)系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶公共數(shù)據(jù)視圖。外模式也稱子模式或用戶模式,它是用戶的數(shù)據(jù)視圖,給出了每個(gè)用戶的局部數(shù)據(jù)描述、、內(nèi)模式又稱物理模式,它給出r數(shù)據(jù)庫(kù)物理存儲(chǔ)結(jié)構(gòu)與物理存取方法,所以選擇 8。
33有如下程序:
#inClude using namespaCe std; Class Base{
publiC:
void output(){Cout<<1;}
virtual void Print(){Cout<<'B’;} };
Class Derived:publiC Base{ publiC:
void output(){Cout<<2;} void Print(){Cout<<’D ';} };
int main() {
Base * ptr=new Derived; ptr一>output();
ptr一>Print(); ptr;
retum0; }
執(zhí)行這個(gè)程序的輸出結(jié)果是( )。
A.1BB.lDC.2BD.2D
參考答案:B
參考解析:在某基類中聲明為vitua1并在一個(gè)或多個(gè)派生類中被重新定義的成員函數(shù),本題中定義了一個(gè)指向派生類對(duì)象的基類指針ptr,執(zhí)行 ptr一>outpnt后,會(huì)執(zhí)行基類的output函數(shù),輸出1,由于Print是虛函數(shù),所以ptr->Print()會(huì)執(zhí)行派生類的 Print,即輸出D,所以本題答案為B。
34以下程序中,錯(cuò)誤的行為是( )。
、#include
、赾lass A
③{
、躳ublic:
⑤ int n=2;
、 A(int val){cout<
、 -A(){};
、鄛;
、醰oid main() ⑩{
A a(0);
}
A.⑤B.⑥C.⑦D.
參考答案:A
參考解析:C++語(yǔ)言中規(guī)定在類體中不允許對(duì)所定義的數(shù)據(jù)成員進(jìn)行初始化。
35下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是( )。
A.循環(huán)隊(duì)列B.帶鏈隊(duì)列C.二叉樹(shù)D.帶鏈棧
參考答案:C
參考解析:樹(shù)是簡(jiǎn)單的非線性結(jié)構(gòu),所以二叉樹(shù)作為樹(shù)的一種也是一種非線性結(jié)構(gòu)。
36有如下程序:
#inClude using namespaCe std; Class A{
publiC:
statiC int a;
void init( ){。a=1;}
A(int a=2){init( );a++;} };
int A::a:0: A obj;
int main( ) {
Cout<
}
運(yùn)行時(shí)輸出的結(jié)果是( )。
A.0B.1C.2D.3
參考答案:B
參考解析:本題考查構(gòu)造函數(shù),本題中對(duì)類中的a數(shù)據(jù)成員先是賦值為0,當(dāng)定義了對(duì)象obj時(shí),執(zhí)行構(gòu)造函數(shù),將a的值變?yōu)榱?,所以輸出1。
37軟件詳細(xì)設(shè)計(jì)產(chǎn)生的圖如下:
該圖是( )。
A.N—S圖B.PAD圖C.程序流程圖D.E—R圖
參考答案:C
參考解析:N—S圖提出了用方框圖來(lái)代替?zhèn)鹘y(tǒng)的程序流程圖,所以A不對(duì)。PAD圖是問(wèn)題分析圖,它是繼承程序流程圖和方框圖之后提出的又一種主要用于描述軟件詳細(xì)設(shè)計(jì)的圖形表示工具,所以B不對(duì)。E—R圖是數(shù)據(jù)庫(kù)中的用于表示E—R模型的圖示工具,所以D不對(duì)。根據(jù)圖中所示表示方法是進(jìn)行軟件詳細(xì)設(shè)計(jì)時(shí)使用的程序流程圖。
38秘序調(diào)試的任務(wù)是( )。
A.設(shè)計(jì)測(cè)試用例
B.驗(yàn)證程序的正確性
C.發(fā)現(xiàn)程序中的錯(cuò)誤
D.診斷和改正程序中的錯(cuò)誤
參考答案:D
參考解析:程序調(diào)試的任務(wù)是診斷和改正程序中的錯(cuò)誤。
39有如下程序:
#include
using namespace std;
class A{
public:
virtual void fancl(){cout<<”Al”;}
void func2(){cout<<”A2”;}
};
class B:public A{
public:
void funcI(){tout<<”Bl”;}
void func2(){tout<<”B2”;}
};
intmain()}
A*P=new B:
P—>funcl();
P—>func2();
p;
return 0;
}
執(zhí)行這個(gè)程序的輸出結(jié)果是( )。
A.B182B.A1A2C.B1A2D.AIB2
參考答案:C
參考解析:本題考查虛函數(shù)。虛函數(shù)指在基類中聲明為virtual并在一個(gè)或多個(gè)派生類中被重新定義的成員函數(shù)。題中定義了一個(gè)派生類對(duì)象8,并使用類A的對(duì)象指針指向B,由于基類A中的funcl為虛函數(shù),所以會(huì)執(zhí)行派生類的funcl,輸出Bl,而基類中的func2不是虛函數(shù),所以 P->func2()會(huì)執(zhí)行基類的func2,輸出A2。故答案為c。
40下列字符串中。不可以用做c++標(biāo)識(shí)符的是( )。
A.y_2006B._EST_HC.ReturnD.switch
參考答案:D
參考解析:本題考查C++標(biāo)識(shí)符的命名規(guī)則,其規(guī)則有如下幾點(diǎn):①所有標(biāo)識(shí)符必須由字母、數(shù)字或下畫(huà)線組成,且必須由字母或下畫(huà)線開(kāi)頭;②所有標(biāo)識(shí)符不能使用C++已有的關(guān)鍵字;③大、小寫(xiě)字母表示不同意義,即代表不同的標(biāo)識(shí)符。選項(xiàng)C中雖然retum是關(guān)鍵字,但因首字母大、小寫(xiě)不同,也可用于標(biāo)識(shí)符,但不建議使用。故答案為D。
二、基本操作題
41請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾projl下的工程projl,其中有枚舉DOGCOLOR、狗類Dog和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR ****found****”下的語(yǔ)句行有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)該是:
There is a white dog named Hoh0. There is a blaCk dog named Haha. There is a motley dog named Hihi. 注意:只修改每個(gè)//ERROR****found****女料下的那一行,不要改動(dòng)程序中的其他內(nèi)容。
#inClude using namespaCe std; //狗的顏色:黑、白、黃、褐、花、其他
enum DOGCOLOR{BLACK,WHITE,YELLOW,BROWN,PIEBALD,OTHER}; Class Dog{//狗類
DOGCOLOR Color; Char name[20]; statiC int Count; publiC:
Dog(Char nalTle[],DOGCOLOR Color){ strCpy(this一>name,name);
//ERROR**********found**********、
strCpy(this一>Color,Color);
} 1 DOGCOLOR getColor()Const{retum Color;}
//ERROR**********found**********
Const Char * 9etName()Const{return*finin9;} Const Char * 9etColorString()Const{
switCh(Color){
Case BLACK:return”blaCk“; Case WHITE:return”white”:
Case YELLOW:return’"yellow”: Case BROWN:return”brown”; ease PIEBALD:return”piebald”:
}
return”motley”;
}
void show()Const{ . Cout<<”There is a”<
} }; int main(){
//ERROR**********found**********
Dog dogl(”Hoh0”,WHITE),dog2(”Haha”,BLACK);d0g3(”Hihi”,0THER); d091.show();
dos2.show(); dos3.show(); return 0;
}
參考解析:
(1)this->color=color:
(2)consL char getName()eonst{return*name;}
(3)Dog dogl(”Hoho”,WHITE)。dog2(”Haha”,
BLACK),dog3(”Hihi”,OTHER);
三、簡(jiǎn)單應(yīng)用題
42請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2。此工程中包含一個(gè)源程序文件main.cpp,其中有“房間”類Room及其派生出的“辦公室”類0ffice的定義,還有主函數(shù)main的定義。請(qǐng)?jiān)诔绦蛑小?/****found****”下的橫線處填寫(xiě)適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。此程序的正確輸出結(jié)果應(yīng)為:
辦公室房間號(hào):308
辦公室長(zhǎng)度:5.6
辦公室寬度:4.8
辦公室面積:26.88
辦公室所屬部門(mén):會(huì)計(jì)科
注意:只能在橫線處填寫(xiě)適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“///料料found料”。
#include
using namespaee std;
class Room{ //“房間”類
int room_n0;//房間號(hào)
double length;//房間長(zhǎng)度(m)
double width;//房間寬度(n1)
public:
Room(int the—room—n0,double the~length,double the—width):loom—no(the—room—no),length(the—
length),width(the—width){}
int theRoomNo()eonst{return iDonl—n0;}
//返回房間號(hào)
double theLength()const{return length;}//返回房間長(zhǎng)度
double theWidth()const{return width;}//返回房間寬度
//**********found**********
double theArea()const{_______________}//返回房間面積(矩形面積)
};
class Office:public Room{//“辦公室”類
char*depart;//所屬部門(mén)
public:
Office(int the_room_n0,double the_length,double the_width,eonst char木the_depart)
//**********found**********
:_______________{
depart=new char[strlen(the depart)+1];
//**********found**********
strcpy(_______________);
}
~Office(){[]depart;}
const char*theDepartment()const{return depart;}//返回所屬部門(mén)
};
int main(){
//**********found**********
Office_______________;
cout<<”辦公室房間號(hào):”<
<<”辦公室長(zhǎng)度:”<
<<”辦公室寬度:”<
<<”辦公室面積:”<
<<”辦公室所屬部門(mén):”<
return 0;
}
【計(jì)算機(jī)二級(jí)《C++》預(yù)測(cè)試題】相關(guān)文章:
計(jì)算機(jī)二級(jí)考試C++試題及答案03-27
2017計(jì)算機(jī)二級(jí)C++考試試題03-05
2016最新計(jì)算機(jī)二級(jí)C++上機(jī)試題及答案03-03
2016年計(jì)算機(jī)二級(jí)C++模擬試題及答案03-07
2017全國(guó)計(jì)算機(jī)二級(jí)C++考試試題03-04
2015年計(jì)算機(jī)二級(jí)《C++》考前沖刺試題03-09