違法信息舉報 客服熱線:400-118-7898
廣告
?
專接本欄目測試廣告

?自考C++程序設(shè)計2018年10月試題

自考 責(zé)任編輯:彭雅倩 2019-06-24

摘要:自考C++程序設(shè)計2018年10月試題及答案解析,該試卷為自考C++程序設(shè)計歷年真題試卷,包含答案及詳細解析。

自考C++程序設(shè)計2018年10月試題及答案解析

自考C++程序設(shè)計2018年10月試題及答案解析,該試卷為自考C++程序設(shè)計歷年真題試卷,包含答案及詳細解析。

一、單項選擇題(本大題共20小題,每小題1分,共20分。)在每小題列出的備選項中只有一項是最符合題目要求的,請將其代碼填寫在題后的括號內(nèi)。錯選、多選或未選均不得分。

1.若有以下類型標識符定義:char c="c"; int a=4; float f=3.14; double d=1.212; 則表達式C+a/(int)d+f的結(jié)果類型是(  )

A.float
B.char
C.int
D.double

2.設(shè)x和y均為bool量,則x&&y為真的條件是(  )

A.它們均為真
B.其中一個為真
C.它們均為假
D.其中一個為假

3.拷貝構(gòu)造函數(shù)應(yīng)該是(  )

A.不帶參數(shù)的構(gòu)造函數(shù)
B.帶有一個參數(shù)的構(gòu)造函數(shù)
C.帶有兩個參數(shù)的構(gòu)造函數(shù)
D.缺省構(gòu)造函數(shù)

4.以下說法中正確的是(  )

A.C++程序總是從第一個定義的函數(shù)開始執(zhí)行
B.C++程序總是從main函數(shù)開始執(zhí)行
C.C++中函數(shù)必須有返回值
D.C++中函數(shù)名必須唯一

5.下列虛基類的聲明中,正確的是(  )

A.class virtual B:public A
B.class B:virtual public A
C.class B:public A virtual
D.virtual class B:public A

6.下列哪個類型函數(shù)不適合聲明為內(nèi)聯(lián)函數(shù)(  )

A.函數(shù)體語句較多
B.函數(shù)體語句較少
C.函數(shù)執(zhí)行時間較短
D.函數(shù)被頻繁調(diào)用

7.以下類模板定義正確的為(  )

A.template﹤class T﹥
B.template﹤class T, class int i﹥
C.template﹤class T, typename T﹥
D.template﹤class T1,T2﹥

8.C++中要實現(xiàn)動態(tài)聯(lián)編,調(diào)用虛函數(shù)時必須使用(  )

A.基類指針
B.類名
C.派生類指針
D.對象名

9.下列對靜態(tài)成員的描述中,不正確的是(  )

A.靜態(tài)成員不屬于對象,是類的共享成員
B.靜態(tài)數(shù)據(jù)成員要在類外定義和初始化
C.調(diào)用靜態(tài)成員函數(shù)時要通過類或?qū)ο蠹せ?,所以靜態(tài)成員函數(shù)擁有this指針
D.非靜態(tài)成員函數(shù)也可以操作靜態(tài)數(shù)據(jù)成員

10.下列對派生類的描述中,錯誤的是(  )

A.一個派生類可以作為另一個派生類的基類
B.派生類至少有一個基類
C.派生類的成員除了它自己的成員外,還包含了它的基類的成員
D.派生類中繼承的基類成員的訪問權(quán)限到派生類保持不變

11.下列函數(shù)原型聲明語句中,錯誤的是(  )

A.int f(void);
B.void f(hat);
C.int f(a);
D.void f(double a);

12.如果有int型變量a,則定義指向變量a的指針p正確的寫法是(  )

A.int p=&a
B.int * P=&a
C.int&p=*a
D.int*p = a

13.假定指針變量P定義為“int *P=new int(100);”,要釋放P所指向的動態(tài)內(nèi)存,應(yīng)使用語句(  )

A.delete p;
B.delete* p;
C.delete&p;
D.delete[ ]p;

14.假定A為一個類,則執(zhí)行“A a[3], b(3);”語句時調(diào)用該類構(gòu)造函數(shù)的次數(shù)為(  )

A.3
B.4
C.5
D.9

15.C++中定義標準輸入輸出的庫為(  )

A.stdio
B.math
C.iostream
D.stdlib

16.允許用戶為類定義一種模式,使得類中的某些數(shù)據(jù)成員及某些成員函數(shù)的返函值能取任意類型,這是一個(  )

A.類模板
B.模板類
C.函數(shù)模板
D.模板函數(shù)

17.下列關(guān)于運算符重載的敘述中,正確的是(  )

A.通過運算符重載,可以定義新的運算符
B.有的運算符只能作為成員函數(shù)重載
C.若重載運算符+,則相應(yīng)的運算符函數(shù)名是+
D.重載一個二元運算符時,必須聲明兩個形參

18.當(dāng)使用ofstream流類定義一個流對象并打開一個磁盤文件時,文件的隱含打開方式為(  )

A.ios::out | ios::binary
B.ios::in | ios::binary
C.ios::out
D.ios::in

19.有關(guān)函數(shù)模板和模板函數(shù)說法錯誤的是(  )

A.函數(shù)模板只是對函數(shù)的描述,編譯器不為其產(chǎn)生任何執(zhí)行代碼,所以它不是一個實實在在的函數(shù)
B.模板函數(shù)是實實在在的函數(shù),它由編譯系統(tǒng)在遇到具體函數(shù)調(diào)用時所生成,并調(diào)用執(zhí)行
C.函數(shù)模板需要實例化為模板函數(shù)后才能執(zhí)行
D.當(dāng)函數(shù)模板和一般函數(shù)同名時,系統(tǒng)先去匹配函數(shù)模板,將其實例化后進行調(diào)用

20.對類的構(gòu)造函數(shù)和析構(gòu)函數(shù)描述正確的是(  )

A.構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)不能重載
B.構(gòu)造函數(shù)不能重載,析構(gòu)函數(shù)可以重載
C.構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)也可以重載
D.構(gòu)造函數(shù)不能重載,析構(gòu)函數(shù)也不能重載

二、填空題(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上正確答案。錯填、不填均無分。

11.將int類型指針p轉(zhuǎn)換為char類型指針,則強制轉(zhuǎn)換語句為_________。

12.當(dāng)一個成員函數(shù)被調(diào)用時,該成員函數(shù)的_________指向調(diào)用它的對象。

13.在_________繼承的情況下,基類數(shù)據(jù)成員在派生類中的訪問權(quán)限保持不變。

14. Windows環(huán)境下,由C++源程序文件編譯而成的目標文件的擴展名是_________。

15.具有至少一個純虛函數(shù)的類是_________。

16. C++中字符串是通過字符數(shù)組來表示的,每一個字符串都有一個結(jié)尾字符_________。

17.C++中定義重載函數(shù)時,應(yīng)至少使重載函數(shù)的參數(shù)個數(shù)或_________不同。

18.假定x=15,則表達式X﹤=10?20:30的值為_________。

19.不同對象可以調(diào)用相同名稱的函數(shù),但執(zhí)行完全不同行為的現(xiàn)象稱為_________。

110.假設(shè)類F的對象f是類A的成員對象,則“A a”語句執(zhí)行時,先調(diào)用類_________的構(gòu)造函數(shù)。

111.設(shè)"int a=3,b=4,C=5;",表達式“(a+b)﹥c&&b==c”的值是_________。

112.描述命題“A小于8或小于C”的表達式為_________。

113.C++中字符串"a+b=12 "的長度為_________。

114.C++類中構(gòu)造函數(shù)的個數(shù)最多是無限個,析構(gòu)函數(shù)的個數(shù)最多是_________個。

115.C++的靜態(tài)數(shù)據(jù)成員需要在_________進行初始化,可以被該類的所有對象共享。

116.C++中一般的程序都要有兩條語句,包含頭文件“#include ﹤iostream﹥”語句和使用命名空間“_________”語句。

117.用new申請某一個類的動態(tài)對象數(shù)組時,在該類中必須能夠匹配到?jīng)]有形參的或缺省參數(shù)的_________,否則應(yīng)用程序會產(chǎn)生一個編譯錯誤。

118.C++中解決命名沖突的機制是_________。

119.拷貝構(gòu)造函數(shù)使_________作為參數(shù)初始化創(chuàng)建中的對象。

120.假如一個類的名稱為F,使用這個類的一個對象初始化該類的另一個對象時,可以調(diào)用_________構(gòu)造函數(shù)來完成此功能。

三、改錯題(本大題共5小題,每小題2分,共10分)

21.#include ﹤iostream.h﹥using namespace std;void setzero(int &a) {a=0; }int main( ){int x1=10; setzero(&x1);cout ﹤﹤x1﹤﹤ endl;return 0;}

22.改正后程序輸出結(jié)果為2 5 8 11 14#include ﹤iostream. h﹥using namespace std;void main( ){int i=1;while(i﹤=15){i++; if(i%3==2) continue;else cout ﹤﹤1﹤﹤" ";}}

23.#include ﹤iostream. h﹥using namespace std;class Point{public: void init( ) { }static void output( ) { }};void main( ){Point P;Point:: init( );P. output( );}

24.#include ﹤iostream. h﹥using namespace std;class A{int x, y; public: void set(int a, int b){ x=a; y=b;}int getx( ){return x; }int gety( ){return y;}int sum( ){return x+y;}}; int main( ) {A a; a. set(3, 4);cout﹤﹤a.x﹤﹤a.y﹤﹤ a.sum( )﹤﹤ endl;return 0;}

25.申請一個長度為10的int型空間,之后釋放該空間。#include ﹤iostream. h﹥using namespace std;int main( ){int *p=new int[ 10];delete p;return 0;}

四、完成程序題(本大題共5小題,每小題4分,共20分)

31.把從鍵盤上輸入的一批整數(shù)(以-1作為終止輸入的標志)保存到文本文件“a:xxk1.dat”中。#include ﹤iostream﹥#include ﹤fstream.h﹥#include ﹤stdlib. h﹥void main( ){ofstream fout("a: xxk1.dat");if( _____________ ) {cout﹤﹤"文件沒有打開!"﹤﹤end;exit(1);}int x; cin﹥﹥x;while(x! =-1){fout ﹤﹤x﹤﹤' ';cin ﹥﹥x;}_____________; //關(guān)閉文件}

32.#include ﹤iostream. h﹥using namespace std;_____________;_____________;{T tmp =x*x+y*y+x*y; return tmp;}int main( ){int x1=1, y1 =4;float x2=1.1, y2=2.2;double x3=2.0, y3=3.1;cout﹤﹤fun(x1, y1)﹤﹤endl;cout ﹤﹤fun(x2, y2)﹤﹤endl;cout ﹤﹤fun(x3, y3)﹤﹤ endl;return 0;}

33.完成程序,使其輸出結(jié)果為79#include ﹤iostream. h﹥using namespace std;int main( ){int a[6]={23,15,64,33,40,58};_____________;s1=s2=a[0];for(int *p=a+1; p﹤a+6; p++) {if(s1﹥*p) s1=*p;if _____________;}cout ﹤﹤s1 +s2 ﹤﹤endl;return 0;}

34.#include ﹤iostream.h﹥class Point{int X,Y;public:Point(int x=0, int y=0){ X=x; Y=y; Countp ++;}Point( point &p){X=p. X; Y=p.Y; }~Point( ){ Countp--; }_____________;static int Countp; void display( ){ cout ﹤﹤X﹤﹤", "﹤﹤Y﹤﹤", "; }};Point myfun( Point p1, Point p2, Point p3){ Point tmp(p1. X+p2. X+P3. X, p1. Y+p2.Y+p3. Y);return tmp;}int Point:: Countp =0;void main( ){ Point pp,p1(1,2),p2(1);Point p=myfun(pp0, pp1, pp2);p. display ( );_____________; //輸出Countp的值}

35.完成程序,使其結(jié)果為 x=6,y=10 x=11,y=10#include ﹤iostream.h﹥using namespace std;class Sample{private: int x;_____________;public:Sample (int a);void print( );};Sample:Sample( _____________ ){ x=a; y=x++;}void Sample:: print( ){cout ﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y﹤﹤end;}int Sample: : y =25;void main( ){ Sample s1(5);Sample s2(10);s1. print( );s2. print( );}

五、程序分析題(本大題共2小題,每小題10分,共20分)

41.#include ﹤iostream﹥using namespace std;void Result(char ch){switch(ch){case 'A':case 'a': cout ﹤﹤"well!";break;case 'B': case 'b':cout ﹤﹤"good!"; break;case 'C':case 'c':cout ﹤﹤"pass!";break;default:cout ﹤﹤"bad!"; break;}}void main( ){char a1='b', a2='C', a3='f';cout ﹤﹤"Results:"﹤ endl;Result(a1);Result(a2 );Result(a3);Result('A');}

42.#include ﹤iostream.h﹥using namespace std;class Sample {protected:int x;public:Sample( ) {x=0; }Sample(int val) { x=val;}void operator++( ){ x++;}};class Derived:public Sample{int y;public:Derived( ):Sample( ) { y=0;}Derived ( int val1, int val2):Sample(val1 ) { y=val2;}void operator--( ) {x--; y--;}void disp( ){cout﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y﹤﹤ endl;}};void main( ) {Derived d(3, 5);D. disp( ); d++;D. disp( ); d--; d--;D. disp( );}

六、程序設(shè)計題(本大題共1小題,共10分)

51.設(shè)計一個圓類circle和一個桌子類table。circle類包含私有數(shù)據(jù)成員radius和求圓面積的成員函數(shù)getarea( );table類包含私有數(shù)據(jù)成員height和返回高度的成員函數(shù)getheight( )。roundtable類繼承所有上述類的數(shù)據(jù)成員和成員函數(shù),添加了私有數(shù)據(jù)成員color和相應(yīng)的成員函數(shù)。其中,main函數(shù)已給出。請完成程序的其他部分。void main( ) { roundtable rt(0.8,1.2,"黑色");cout﹤"圓桌屬性數(shù)據(jù)"﹤endl; cout﹤﹤"高度:"﹤﹤rt.getheight( )﹤"米"﹤﹤endl;cout﹤"面積:"﹤﹤tr. geared( )﹤"平方米"﹤﹤endl;cout﹤﹤"顏色"﹤﹤rt. getcolor( )﹤﹤endl; }

溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請考生以權(quán)威部門公布的內(nèi)容為準!

自考備考資料免費領(lǐng)取

去領(lǐng)取