?自考C++程序設(shè)計2012年1月試題
摘要:自考C++程序設(shè)計2012年1月試題及答案解析,該試卷為自考C++程序設(shè)計歷年真題試卷,包含答案及詳細解析。
自考C++程序設(shè)計2012年1月試題及答案解析
自考C++程序設(shè)計2012年1月試題及答案解析,該試卷為自考C++程序設(shè)計歷年真題試卷,包含答案及詳細解析。
一、單項選擇題(本大題共20小題,每小題1分,共20分。)在每小題列出的備選項中只有一項是最符合題目要求的,請將其代碼填寫在題后的括號內(nèi)。錯選、多選或未選均不得分。
1.如聲明對象數(shù)組,則下列描述正確的是( )
A.對每個元素均調(diào)用一次構(gòu)造函數(shù)
B.部分元素調(diào)用構(gòu)造函數(shù),其它元素不需調(diào)用
C.均不需要調(diào)用構(gòu)造函數(shù)
D.只是首元素調(diào)用構(gòu)造函數(shù)
2.不同對象調(diào)用同一成員函數(shù)時,this指針指向( )
A.不同對象
B.相同對象
C.無對象
D.不確定
3.設(shè)存在函數(shù)int max(int,int)返回兩參數(shù)中較大值,若求22,59,70三者中最大值,下列表達式正確的是( )
A.int m=max(22,max(59,70));
B.int m=max(max(22,59),max(59,70));
C.int m=max(max(22,70),59);
D.以上皆正確
4.一個類可擁有多少個構(gòu)造函數(shù)( )
A.0個
B.1個
C.1或多個
D.以上皆對
5.在編譯指令中,嵌入指令是指( )
A.#include
B.#define
C.#if
D.#else
6.設(shè)存在數(shù)組a,其長度為Len,下列哪項操作是將a中元素復(fù)制到數(shù)組b中( )
A.reverse(a+a,Len,b);
B.sort(a,a+Len,b);
C.find(a,a+Len,b);
D.copy(a,a+Len,b);
7.下列哪個要素不是面向?qū)ο蟮年P(guān)鍵要素( )
A.模塊化
B.抽象性
C.封裝性
D.繼承性
8.下列對于類的描述錯誤的是( )
A.類要先聲明后使用
B.類是具有唯一標(biāo)識的實體
C.兩個類可以使用同一個名稱
D.組成類的不僅有數(shù)據(jù),還可以有對數(shù)據(jù)進行操作的函數(shù)
9.使用引用調(diào)用方式將實參傳給形參,下列說法正確的是( )
A.形參是實參的備份
B.實參是形參的備份
C.形參和實參共享同一對象
D.形參和實參無聯(lián)系
10.關(guān)于對象的性質(zhì),下列描述錯誤的是( )
A.同一類對象之間可相互賦值
B.不能使用對象數(shù)組
C.對象可以用作函數(shù)參數(shù)
D.一個對象可以用作另一個類的成員
11.類的私有成員可在哪里被賦值( )
A.類體中
B.該類的成員函數(shù)中
C.A和B
D.以上都不是
12.設(shè)存在數(shù)組a,其長度為Len,則下列哪個泛型算法用于反轉(zhuǎn)a中各元素( )
A.reverse(a,a+Len);
B.sort(a,a+Len);
C.find(a,a+Len,value);
D.copy(a,a+Len,b);
13.用于標(biāo)識八進制常量的前綴或后綴是( )
A.無
B.后綴L或l
C.前綴零
D.前綴0x
14.派生類中繼承的基類成員初始化如何進行( )
A.由派生類構(gòu)造函數(shù)調(diào)用基類的構(gòu)造函數(shù)進行
B.由派生類構(gòu)造函數(shù)進行
C.由基類構(gòu)造函數(shù)進行,無需派生類構(gòu)造函數(shù)調(diào)用
D.以上皆不正確
15.對于多重繼承,下列描述正確的是( )
A.所有基類使用相同的派生方式
B.每個基類可使用不同派生方式
C.只能是public派生
D.只能是protected派生
16.下列關(guān)于類的權(quán)限描述錯誤的是( )
A.類本身的成員函數(shù)可以訪問自身的任何成員
B.類的對象可以訪問該類的所有成員
C.普通函數(shù)不能直接訪問類的公有成員,必須通過成員函數(shù)對其訪問
D.一個類可以將另一個類的對象作為成員
17.運算符delete與哪個函數(shù)一起運行( )
A.構(gòu)造函數(shù)
B.析構(gòu)函數(shù)
C.主函數(shù)
D.不與任何函數(shù)一起工作
18.一個類可以獲得另一個類的特性的機制稱為( )
A.抽象
B.封裝
C.繼承
D.多態(tài)性
19.使用下列哪個格式控制符可設(shè)置轉(zhuǎn)換十六進制為十進制( )
A.dec
B.oct
C.hex
D.endl
20.對引用調(diào)用描述正確的是( )
A.分配新存儲空間
B.修改已存儲空間的名稱為引用名
C.引用名與已存在存儲空間無任何關(guān)聯(lián)
D.將引用名標(biāo)識符與一塊已存在儲區(qū)域相關(guān)聯(lián),沒有分配新存儲空間
二、填空題(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上正確答案。錯填、不填均無分。
11.公共派生中,基類的公有成員在派生類中是______。
12.若要使用標(biāo)準(zhǔn)輸入流機制從鍵盤輸入一個整數(shù)賦給整型變量a,相應(yīng)的C++語句是______。
13.UML中對象行為之間的動態(tài)關(guān)系是通過對象行為之間的依賴關(guān)系表現(xiàn)的,稱之為______。
14.C++函數(shù)中按引用調(diào)用傳遞參數(shù)時使用______作為參數(shù)。
15.在C++中除具有______語句和switch語句的函數(shù)外,其它函數(shù)都可以說明為內(nèi)聯(lián)函數(shù)。
16.C++中規(guī)定模板以______關(guān)鍵字和一個形參表示開頭。
17.構(gòu)造函數(shù)不能被繼承,一個派生類只能調(diào)用它的______基類的構(gòu)造函數(shù)。
18.vector類中用于獲取存放的元素個數(shù)的方法是______。
19.C++中istream類的直接基類是______。
110.要關(guān)閉一個文件輸出流對象myFile,所用的C++語句是______。
111.執(zhí)行下列代碼 double pi= 3.141592 cout﹤﹤setprecision(2)﹤﹤pi; 程序的輸出結(jié)果是______。
112.在私有派生中,基類的權(quán)限為private的成員,在派生類中______。
113.C++總共有3種文件流,分別是輸入文件流、輸出文件流和______。
114.C++使用流進行輸入輸出,其中能捕獲鍵盤輸入的對象是______。
115.在vector類中刪除向量中最后一個對象的方法是______。
116.函數(shù)重載可使一個函數(shù)名具有多種功能,稱這種特性為______。
117.C++語言對C語言做了很多改進,C++語言相對于C語言的最根本的變化是引進了______概念。
118.______指令定義一個標(biāo)識符及串,在源程序中每次遇到該標(biāo)識符時,編譯器均用定義的串代替之。
119.在C++標(biāo)準(zhǔn)輸出方式中,要設(shè)置輸出數(shù)據(jù)字段寬度width所使用的操控符是______。
120.設(shè)有定義int x; float y;,則10+x+y值的數(shù)據(jù)類型是______。
三、改錯題(本大題共5小題,每小題2分,共10分)
21.#include ﹤iostream.h﹥ main( ){ int x=9,y=8,z=7; const int * p=z; cout﹤﹤ * p﹤﹤endl; }
22.#include ﹤iostream.h﹥ main( ){ int x=8,y=6; const int*const p=&x; p=&y; cout﹤﹤* p﹤﹤endl; }
23.#include ﹤iostream.h﹥ main( ){ folat p; p=new folat[5]; for(int i=0;i﹤5;i++) {cin﹥﹥ * (p+i);cout﹤﹤ * (p+i)﹤﹤endl;} delete p; }
24.template﹤class T﹥ T f(T x){ T y; y=x+T; return y; }
25.#include ﹤iostream.h﹥ class point{ int x; public: void init(int a){x=a;} int getx( ){return x;} void setx(int a){x=a;} }; main( ){ point a; a.init(20,30); cout﹤﹤a.getx( )﹤﹤endl; }
四、完成程序題(本大題共5小題,每小題4分,共20分)
31.在下面程序的下劃線處填上正確的語句,使其得到下面的輸出結(jié)果。 x=2,y=3 #include ﹤iostream.h﹥ class Sample { int x,y; public: Sample( ){ x=y=0; } Sample(int a,int b){ x=a; (__________) } void disp( ) { cout﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y﹤﹤endl; } }(____­_______) void main( ) { Sample s(2,3), *p=&s; p-﹥disp( ); }
32.在下劃線處填上適當(dāng)?shù)恼Z句,使程序的輸出結(jié)果如下: n=30 #include ﹤ iostream.h ﹥ template﹤ class T ﹥ class Sample { T n; public: Sample( ){ } Sample(T i){_________} Sample﹤T﹥&operator+(const Sample﹤T﹥&); void disp( ){cout﹤﹤"n="﹤﹤n﹤﹤endl;} }; template﹤class T﹥ Sample﹤T﹥&Sample﹤T﹥::operator+(const Sample﹤T﹥&s) { static Sample﹤T﹥temp; return temp; } void main( ) { Sample﹤int﹥s1(10),s2(20),s3; s3=s1+s2; s 3.disp( ); }
33.在下劃線處填上適當(dāng)?shù)恼Z句,使程序的輸出結(jié)果如下: 1 2 3 4 5 6 7 8 9 10 #include ﹤iostream.h﹥ class Sample { int A[10][10]; public: int &operator( )(int,int); }; int &Sample::operator( )(int x,int y) { return A[x][y]; } void main( ) { Sample a; int i, j; _________ for(j=0;j﹤10;j++) _________ for(i=0;i﹤10;i++) cout﹤﹤a(i, 1)﹤﹤ " "; cout﹤﹤endl; }
34.在下劃線處填上適當(dāng)?shù)木渥?,完成函?shù)的定義。 #include ﹤iostream.h﹥ class Sample { int x; public: Sample( ){ }; _________{x=a;} _________{x=a.x+++10;} void disp( ){cout﹤﹤"x="﹤﹤x﹤﹤endl;} }; void main( ) { Sample s1(2),s2(s1); s 1.disp( ); s 2.disp( ); }
35.輸入一個字符串,將其逆序后輸出。 #include ﹤iostream﹥ using namespace std; void main( ) { char a[50];memset(a,0,sizeof(a)); int i=0,j; char t; cin.getline(a,50,' '; for(i=0, j=strlen(a)-1;i﹤_________;i++, j-- ) { t=a[i]; a[j]=t; } cout﹤﹤a﹤﹤endl; }
五、程序分析題(本大題共4小題,每小題5分,共20分)
41.給出下面程序的輸出結(jié)果 #include ﹤iostream.h﹥ class example { int a; public: example(int b){a=b++;} void print( ){a=a+1;cout﹤﹤a﹤﹤" ";} void print( )const{cout﹤﹤a﹤﹤"";} }; void main( ) { example x(3); const example y(2); x.print( ); y.print( ); }
42.給出下面程序的輸出結(jié)果 #include ﹤iostream.h﹥ class Sample { int x,y; public: Sample( ){x=y=0;} Sample(int a,int b){x=a;y=b;} ~Sample( ) { if(x==y) cout﹤﹤"x=y"﹤﹤endl; else cout﹤﹤"x!=y"﹤﹤endl; } void disp( ) { cout﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y﹤﹤endl; } }; void main( ) { Sample s1(2,3); s 1.disp( ); }
43.給出下面程序的輸出結(jié)果 #include ﹤iostream.h﹥ class Sample { int n; static int sum; public: Sample(int x){n=x;} void add( ){sum+=n;} void disp( ) { cout﹤﹤"n="﹤﹤n﹤﹤",sum="﹤﹤sum﹤﹤endl; } }; int Sample::sum=0; void main( ) { Sample a(2),b(3),c(5); a.add( ); a.disp( ); b.add( ); b.disp( ); c.add( ); c.disp( ); }
44.給出下面程序的輸出結(jié)果 #include ﹤iostream.h﹥ class A{ private: friend class B; A(int val=0):data(val),use(1){ } int use,data; }; class B{ public: A*pa; B(int val=0):pa(new A(val)){ } ~B( ){if( -- pa -﹥use==0)delete pa;} B(B&rhs){ ++ rhs -﹥use;pa=rhs.pa;} B&operator=(B&rhs); A*operator -﹥( ){return pa;} void Display( ){ cout﹤﹤"data="﹤﹤pa -﹥data﹤﹤",use="﹤﹤pa -﹥use﹤﹤endl; } }; B&B::operator=(B&rhs) { if(this ==&rhs)return*this; if( -- pa -﹥use = =0)delete pa; ++ rhs -﹥use; pa=rhs.pa; return * this; } int main( ){ B b1(1),b2(b1),b3(3); b 1.Display( ); b 2.Display( ); b 3.Display( ); b3=b1; b 1.Display( ); b 3.Display( ); return 0;
六、程序設(shè)計題(本大題共1小題,共10分)
51.已知一個student類,包括學(xué)姓名,成績和等級,不含任何成員函數(shù),process為學(xué)生信息處理類。 class student{ char name[10]; int deg; char level[7]; friend class process: public: student(char na[ ],int d){strcpy(name,na);deg=d;} } ; class process{ public: void trans(student s[ ]){…} //根據(jù)學(xué)生成績計算學(xué)生等級(優(yōu)大于89分,良大于79分,中大于69分,及格大于59分,不及格小于60分) void disp(student s[ ]){…} //根據(jù)成績降序打印所有學(xué)生信息 }; 要求實現(xiàn)process類中的兩個函數(shù):
延伸閱讀
- 2023年10月自考00257票據(jù)法真題
- 2023年10月自考00249國際私法真題
- 2023年10月自考00246國際經(jīng)濟法概論真題
- 2023年10月自考00245刑法學(xué)真題
- 2023年10月自考00186國際商務(wù)談判真題
- 2023年10月自考00185商品流通概論真題
自考微信公眾號
掃碼添加
自考備考資料免費領(lǐng)取
去領(lǐng)取