第 1 頁(yè):沖刺試題 |
第 2 頁(yè):參考答案 |
點(diǎn)擊查看:2018年12月計(jì)算機(jī)二級(jí)C++考試沖刺試題及答案匯總
一、選擇題(每小題1分,共40小題,共40分)
1.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是指( )。
A.數(shù)據(jù)所占的存儲(chǔ)空間
B.數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的存放形式
C.數(shù)據(jù)在計(jì)算機(jī)中的順序存儲(chǔ)方式
D.存儲(chǔ)在計(jì)算機(jī)外存中的數(shù)據(jù)
2.將E-R圖轉(zhuǎn)換到關(guān)系模式時(shí),實(shí)體與實(shí)體間的聯(lián)系可以表示成( )。
A.屬性
B.關(guān)系
C.鍵
D.域
3.對(duì)長(zhǎng)度為n的線性表進(jìn)行順序查找,在最壞情況下需要比較的次數(shù)為( )。
A.125
B.n/Z
C.n
D.n+1
4.樹(shù)是結(jié)點(diǎn)的集合,它的根結(jié)點(diǎn)的數(shù)目是( )。
A.有且只有1個(gè)
B.1或多于1
C.0或1
D.至少有2個(gè)
5.設(shè)R是一個(gè)二元關(guān)系,S是一個(gè)三元關(guān)系,則下列運(yùn)算中正確的是( )。
A.R-S
B.R×S
C.R∩S
D.R∪S
6.關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)原則和方法的描述錯(cuò)誤的是( )。
A.選用的結(jié)構(gòu)只允許有一個(gè)入口和一個(gè)出口
B.復(fù)雜結(jié)構(gòu)應(yīng)該用嵌套的基本控制結(jié)構(gòu)進(jìn)行組合嵌套來(lái)實(shí)現(xiàn)
C.不允許使用GOTO語(yǔ)句
D.語(yǔ)言中所沒(méi)有的控制結(jié)構(gòu),應(yīng)該采用前后一致的方法來(lái)模擬
7.對(duì)關(guān)系S和R進(jìn)行集合運(yùn)算,結(jié)果中既包含S中的所有元組也包含R中的所有元組,這樣的集合運(yùn)算稱為( )。
A.并運(yùn)算
B.交運(yùn)算
C.差運(yùn)算
D.積運(yùn)算
8.下列敘述中正確的是( )。
A.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,各個(gè)對(duì)象之間具有密切的關(guān)系
B.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,各個(gè)對(duì)象都是公用的
C.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,各個(gè)對(duì)象之間相對(duì)獨(dú)立,相互依賴性小
D.上述三種說(shuō)法都不對(duì)
9.結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu)是( )。
A.過(guò)程、子程序和分程序
B.順序、選擇和重復(fù)
C.遞歸、堆棧和隊(duì)列
D.調(diào)用、返回和轉(zhuǎn)移
10.在數(shù)據(jù)庫(kù)設(shè)計(jì)中,將E-R圖轉(zhuǎn)換為關(guān)系模式的過(guò)程屬于( )。
A.需求分析階段
B.邏輯設(shè)計(jì)階段
C.概念設(shè)計(jì)階段
D.物理設(shè)計(jì)階段
11.在C++語(yǔ)言中函數(shù)返回值的類型是由( )決定的。
A.調(diào)用該函數(shù)時(shí)系統(tǒng)臨時(shí)
B.return語(yǔ)句中的表達(dá)式類型
C.定義該函數(shù)時(shí)所指定的函數(shù)類型
D.調(diào)用該函數(shù)時(shí)的主調(diào)函數(shù)類型
12.下列描述正確的是( )。
A.表示m>n為true或mn&&m B.switch語(yǔ)句結(jié)構(gòu)中必須有default語(yǔ)句
C.if語(yǔ)句結(jié)構(gòu)中必須有else語(yǔ)句
D.如果至少有一個(gè)操作數(shù)為true,則包含‖運(yùn)算符的表達(dá)式為true
13.使用ifstream流類定義流對(duì)象并打開(kāi)磁盤文件時(shí),文件的隱含打開(kāi)方式為( )。
A.ios::in
B.ios::out
C.ios::inlios::out
D.沒(méi)有默認(rèn)
14.下列各類函數(shù)中,不是類的成員函數(shù)的是( )。
A.構(gòu)造函數(shù)
B.抽象類
C.派生類
D.以上都不對(duì)
15.下面關(guān)于數(shù)組的初始化正確的是( )。
A.charstr[]={’a’,’b’,’e’}
B.charstr[2]={’a’,’b’,’e’)
C.charstr[2][3]={{’a’,’b’},{’C’,’d’},{’e’,’f’}}
D.charstr()={’a’,’b’,’C’}
16.類模板templateclassX{…},其中友元函數(shù)f對(duì)特定類型T(如int),使函數(shù)f(x)成為x模板類的友元,則其說(shuō)明為( )。
A.friendvoidf();
B.friendvoidf(x);
C.friendvoidA::f();
D.friendvoidC::f(x);
17.類MyClass的定義如下:
classMyClass
{
public:
MyClass(){value=0;}
SetVariable(inti){valtic=i;}
private:
intvalue;
};
MyClass*P,my;p=&my;
則對(duì)下列語(yǔ)句序列正確的描述是( )。
A.語(yǔ)句p=&my;是把對(duì)象my賦值給指針變量P
B.語(yǔ)句MyClass*P,my;會(huì)調(diào)用兩次類MyClass的構(gòu)造函數(shù)
C.對(duì)語(yǔ)句*P.SetVariable(5)的調(diào)用是正確的
D.語(yǔ)句P->SetVariable(5)與語(yǔ)句my.SetVariable(5)等價(jià)
18.下面關(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)
19.如果表達(dá)式-x/y中的“--”和“/”是作為友元函數(shù)重載的運(yùn)算符,采用運(yùn)算符函數(shù)調(diào)用格式,該表達(dá)式還可表示為( )。
A.operator/(x.operator--(),y);
B.operator/(operator--(x),y);
C.X.operator--().operator/(y);
D.y.operator/(operator--(x));
20.已知類A有公用數(shù)據(jù)成員a,并重載了=運(yùn)算符,且有Aobj2;constA*ptr=newA;,則下列語(yǔ)句錯(cuò)誤的是( )。
A.ptr->a=100;
B.ptr=&obj2;
C.ptr++;
D.obj2=*ptr;
21.可以用P.a的形式訪問(wèn)派生類對(duì)象P的基類成員a,其中a是( )。
A.私有繼承的公有成員
B.公有繼承的私有成員
C.公有繼承的保護(hù)成員
D.公有繼承的公有成員
22.下面程序的運(yùn)行結(jié)果為( )。
#include
classA
{
intnum;
public:
A(inti){num=i;)
A(A&a){num=a.num++;}
voidprint(){cout< };
voidmain()
{
Aa(1),b(a);
a.print();
b.print();
}
A.11B.12
C.21D.22
23.設(shè)有定義charstr[80];以下不能將輸入數(shù)據(jù)first\nsecond\n讀取到數(shù)組str中的語(yǔ)句是( )。
A.cin.get(str,strlen(str));
B.cin.getline(str,strlen(str));
C.cin>>str;
D.cin.read(str,strlen(str));
24.下列程序的輸出結(jié)果為( )。
#include
classTestClass
{
public:
TestClass(){val++;}
static,intval;
};
intTestClass::val=0;
voidmain()
{
TestClasscsl;
cout< TestClasscs2;
TestClasscs3,cs4;
cout< }
A.O3
B.13
C.14
D.24
25.有以下類定義:
classMyClass
{
private:
intid;
chargender;
char*phone;
public:
MyClass():id(0),gender(’#’),phone(NULl){}
MyClass(intn0,charge=’#’,char*ph=NULL)
{id=no;gender=ge;phone=ph;}
};
下列類對(duì)象定義語(yǔ)句中錯(cuò)誤的是( )。
A.MyClassmyObj;
B.MyClassmyObj(11,"13301111155");
C.MyClassmyObj(12,’m’);
D.MyClassmyObj(12);
26.下列是關(guān)于派生類聲明的開(kāi)始部分,其中正確的是( )。
A.classvirtualB:publicA
B.virtualclassB:publicA
C.classB:publicAvirtual
D.classB:virtualpublicA
27.如果類A被說(shuō)明成類B的友元,則( )。
A.類A的成員即類B的成員
B.類B的成員即類A的成員
C.類A的成員函數(shù)不得訪問(wèn)類B的成員
D.類B不一定是類A的友元
28.下列關(guān)于虛基類的描述,錯(cuò)誤的是( )。
A.設(shè)置虛基類的目的是為了消除二義性
B.虛基類的構(gòu)造函數(shù)在非虛基類之后調(diào)用
C.若同一層中包含多個(gè)虛基類,這些虛基類的構(gòu)造函數(shù)按它們說(shuō)明的次序調(diào)用
D.若虛基類由非虛基類派生而來(lái),則仍然先調(diào)用基類構(gòu)造函數(shù),再調(diào)用派生類的構(gòu)造函數(shù)
29.下列關(guān)于多態(tài)性的描述,錯(cuò)誤的是( )。
A.C++語(yǔ)言中的多態(tài)性分為編譯時(shí)的多態(tài)性和運(yùn)行時(shí)的多態(tài)性
B.編譯時(shí)的多態(tài)性可通過(guò)函數(shù)重載實(shí)現(xiàn)
C.運(yùn)行時(shí)的多態(tài)性可通過(guò)模板和虛函數(shù)實(shí)現(xiàn)
D.實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)性的機(jī)制稱為動(dòng)態(tài)綁定
30.若有如下程序:
#include
usingnamespacestd;
classTestClassl
{
private:
inta;
public:
TestClassl(inti)
{
a=i:
}
voiddisp( )
{
cout< }
};
classTestClass2
{
private:
intb:
public:
TestClass2(intj)
{
b=j;
}
voiddisp()
{
cout< }
};
classTestClass3:publicTestClass2,publicTestClassl
{
private:
intc;
public:
TestClass3(intk):TestClass1(k-2),TestClass2(k+2)
{
c=k:
}
voiddisp()
{
TestClasssl::disp();
TestClasss2::disp();
cout< }
};
intmain()
{
TestClass30bj(10);
obj.disp();
return0;
}
程序執(zhí)行后的輸出結(jié)果是( )。
A.10,10,10
B.10,12,14
C.8,10,12
D.8,12,10
31.在下列程序的橫線處填上適當(dāng)?shù)膬?nèi)容,使程序執(zhí)行后的輸出結(jié)果為ABCD( )。
#include
usingnamespacestd;
classA
{
public:A(){cout<<’A’;}
};
classB:
{
public:B(){cout<<’B’;}
};
classC:virtualpublicA
{
public:C(){cout<<’C’;}
};
classD:publicB,publicD
{
public:D(){cout<<’D’;}
};
voidmain(){D04;}
A.publicA
B.privateA
C.protectedA
D.virtualpublicA
32.有如下程序:
#include
usingnamespacestd;
classAA{
intn;
public:
AA(intk):n(k){}
intget(){returnn;}
intget()const{returnn+1;}
};
intmain()
{
AAa(5);
constAAb(6);
cout< return0;
}
執(zhí)行后的輸出結(jié)果是()。
A.55
B.57
C.75
D.77
33.有如下程序:
#include
usingnamespacestd;
classDemo
{
public:
Demo(){cout<<"defaultconstructor\n";}
Demo(constDemo&x){cont<<"copyconstruc-
tor\n";}
};
DemouserCode(Demob){Democ(b);returnC;}
intmain()
{
Demoa;d;
cout<<"callinguserCode()\n";
d=userCode(a):
return0;
}
執(zhí)行上面程序的過(guò)程中,構(gòu)造函數(shù)Demo( )和Demo(constDem0&x)被調(diào)用的次數(shù)分別是( )。
A.1和1
B.1和2
C.2和3
D.2和4
34.有如下程序:
#include
usingnamespacestd;
classDA{
intk;
public:
DA(intx=1):k(x){}
~DA(){cout< };
intmain(){
DAd[]={DA(3),DA(3),DA(3));
DA+p=newDA[2];
delete[]p;
return();
}
這個(gè)程序的輸出結(jié)果是( )。
A.111
B.333
C.11333
D.11133
35.有如下程序:
#include
usingnamespacestd;
classMyClass{
public:
MyClass(intx):val(x){}
voidPrint()const{cout<<"const:val="<< voidPrint(){cout<<"val="< private:
intval;
};
intmain(){
constMyClassobj1(10);
MyClassobj2(20);
obj1.Print();
obj2.Print();
return0;
}
程序的輸出結(jié)果是( )。
A.va1=10const:va1=20
B.const:va1=10const:va1=20
C.const:va1=10val=20
D.val=10va1=20
36.關(guān)于函數(shù)中的<返回類型>。下列表述中錯(cuò)誤的是( )。
A.<返回類型>中有可能包含關(guān)鍵字int
B.<返回類型>中有可能包含自定義標(biāo)識(shí)符
C.<返回類型>中衣可能包含字符*
D.<返回類型>中可能包含[]
37.Sample是一個(gè)類,執(zhí)行下面語(yǔ)句后,調(diào)用Sample類的構(gòu)造函數(shù)的次數(shù)是( )。
Samplea[2],*p=newSample;
A.0
B.1
C.2
D.3
38.有如下兩個(gè)類定義:
classXX{
private:
doublex1;
protected:
doublex2;
public:
doublex3;
};
claseYY:protectedXX{
private:
doubley1;
protected;
doubley2;
public:
doubley3;
};
在類YY中保護(hù)成員變量的個(gè)數(shù)是( )。
A.1
B.2
C.3
D.4
39.下列關(guān)于運(yùn)算符重載的描述中,錯(cuò)誤的是( )。
A.可以通過(guò)運(yùn)算符重載在C++中創(chuàng)建新的運(yùn)算符
B.賦值運(yùn)算符只能重載為成員函數(shù)
C.運(yùn)算符函數(shù)重載為類的成員函數(shù)時(shí),第一操作參數(shù)就是該類對(duì)象
D.重載類型轉(zhuǎn)換運(yùn)算符時(shí)不需要聲明返回類型
40.下列關(guān)于類模板的描述中,錯(cuò)誤的是( )。
A.類模板的成員函數(shù)都是模板函數(shù)
B.可以為類模板參數(shù)設(shè)置默認(rèn)值
C.類模板描述了一組類
D.類模板中只允許有一個(gè)類型參數(shù)
二、程序改錯(cuò)題(18分)
使用VC++6.0打開(kāi)考生文件夾下的源程序文件1.cpp,該程序運(yùn)行時(shí)有錯(cuò),請(qǐng)改正其中的錯(cuò)誤,使程序正常運(yùn)行,并使程序輸出的結(jié)果為
TC1
TC2
注意:不要改動(dòng)main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯(cuò)誤的語(yǔ)句在//******error******的下面。
試題程序:
#include
#include structTCO
{
//********error********
virtualvoidfun();
};
classTCl:publicTCO
{
voidfun()
{
cout<<"TCl"< }
};
classTC2:publicTCO
{
voidfun()
{
cout<<"TC2"< }
};
voidmain()
{
TCO"P;
TClobj1;
TC2obj2;
//********error********
p=*obj1;
p->fun();
//********error********
p=*obj2;
p->fun();
return;
}
三、簡(jiǎn)單應(yīng)用題(24分)
使用VC++6.0打開(kāi)考生交件夾下的源程序文件2.cpp。閱讀下列函數(shù)說(shuō)明和代碼,完成空出部分程序。函數(shù)fun(intN[4])的功能是用4個(gè)數(shù)字,組成互不相同且無(wú)重復(fù)數(shù)字的3位數(shù),并將滿足所有條件的數(shù)字輸出到屏幕,
并且每輸出一個(gè)3位數(shù)就換一行。
程序分析:可填在百位、十位、個(gè)位的數(shù)字都是1、2、3、0。組成所有的排列后再去掉不滿足條件的排列。如果判定第一個(gè)數(shù)字是0,則也去掉。
試題程序:
#include
voidfun(intN[4])
{
}
intmain()
intN[4]={1,2,3,0};
fun(N):
return0;
}
四、綜合應(yīng)用題(18分)
使用VC++6.0打開(kāi)考生文件夾下的源程序文件3.cpp。其中定義的類不完整,按要求完成下列操作,將類的定義補(bǔ)充完整。
(1)基類People完成打印功能,定義其中的打印函數(shù)為
虛函數(shù),請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。
(2)類Boy繼承于People,在構(gòu)造函數(shù)中設(shè)置性別為1,
請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。
(3)類Girl繼承于People,在構(gòu)造函數(shù)中設(shè)置性別為0,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。
(4)實(shí)現(xiàn)函數(shù)fun,用于傳遞不同的類型,打印出性別,請(qǐng)?jiān)谧⑨?后添加適當(dāng)?shù)恼Z(yǔ)句。
輸出的內(nèi)容如下:
Sex=Boy
Sex=Girl
注意:除在指定位暨添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
試題程序:
#include
classPeople
{
public:
//********1********
voidprint(){}
intsex;
};
classBoy:publicPeople
{
publiC:
Boy()
{
//********2********}
voidprint()
{
cout<<"Boy"< }
};
classGirl:publicPeople
{
public:
Girl()
{
//********3********}
voidprint()
{
cout<<"Girl"< }
};
//********4********{
cout<<"Sex=";
p.print();
}
intmain()
{
Boym:
fun(m);
Girln:
fun(n);
return0;
}
微信搜索"考試吧"了解更多考試資訊、下載備考資料
相關(guān)推薦:
2018年12月全國(guó)計(jì)算機(jī)等級(jí)考試必做試題匯總
2018年全國(guó)計(jì)算機(jī)等級(jí)考試必做試題匯總(各科目)
各地2018年12月全國(guó)計(jì)算機(jī)等考準(zhǔn)考證打印時(shí)間匯總
2018年全國(guó)計(jì)算機(jī)等級(jí)考試復(fù)習(xí)知識(shí)點(diǎn)匯總(各科目)
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |