?自考C++程序設(shè)計2017年4月試題
摘要:自考C++程序設(shè)計2017年4月試題及答案解析,該試卷為自考C++程序設(shè)計歷年真題試卷,包含答案及詳細解析。
自考C++程序設(shè)計2017年4月試題及答案解析
自考C++程序設(shè)計2017年4月試題及答案解析,該試卷為自考C++程序設(shè)計歷年真題試卷,包含答案及詳細解析。
一、單項選擇題(本大題共20小題,每小題1分,共20分。)在每小題列出的備選項中只有一項是最符合題目要求的,請將其代碼填寫在題后的括號內(nèi)。錯選、多選或未選均不得分。
1.以下說法中不正確的是( )
A.C++程序中必須有一個主函數(shù)main( ),而且是從main( )的第一條語句開始執(zhí)行
B.非主函數(shù)都是在執(zhí)行主函數(shù)時,通過函數(shù)調(diào)用或嵌套調(diào)用而得以執(zhí)行的
C.主函數(shù)可以在任何地方出現(xiàn)
D.主函數(shù)必須出現(xiàn)在固定位置
2.若有定義int *p= new int(0),則下列說法正確的是( )
A.系統(tǒng)用指針變量p來表示所指整型變量
B.聲明一個指針變量p,指向名為new的存儲單元
C.系統(tǒng)為指針變量p分配一個整型數(shù)據(jù)的存儲空間
D.通過運算符new,分配一個整型數(shù)據(jù)的存儲空間,并將其內(nèi)存地址賦予指針變量
3.以下有關(guān)類與對象的敘述中,錯誤的是( )
A.對象是類的一個實例
B.一個類可以有多個對象
C.任何一個對象都歸屬于一個具體的類
D.只要是某個類的對象,那么該對象就可以訪問這個類的所有成員
4.以下有關(guān)構(gòu)造函數(shù)的敘述中,錯誤的是( )
A.構(gòu)造函數(shù)名必須和類名一致
B.構(gòu)造函數(shù)在定義對象時自動執(zhí)行
C.在一個類中構(gòu)造函數(shù)有且僅有一個
D.構(gòu)造函數(shù)可以在類體內(nèi)聲明在類體外實現(xiàn)
5.以下敘述中正確的是( )
A.類成員的定義必須放在類體內(nèi)部
B.在類中,不作特別說明的數(shù)據(jù)成員均為私有類型
C.在類中,不作特別說明的數(shù)據(jù)成員均為公有類型
D.類成員的定義必須是成員變量在前,成員函數(shù)在后
6.友元函數(shù)的主要作用是( )
A.提高程序的效率
B.加強類的封裝性
C.實現(xiàn)數(shù)據(jù)的隱蔽性
D.增加成員函數(shù)的種類
7.在C++中,字符型數(shù)據(jù)在內(nèi)存中的存放形式為( )
A.原碼
B.BCD碼
C.ASCII碼
D.反碼
8.下列變量命名中,非法的是( )
A.A**LONG
B.MyCar
C.my_car
D.a48
9.關(guān)于對類的描述中,錯誤的是( )
A.類是創(chuàng)建對象的樣板
B.類是具有唯一標識符的實體
C.類就是C語言中的結(jié)構(gòu)類型
D.類是具有共同行為的若千對象的統(tǒng)一描述體
10.不能作為函數(shù)重載的判斷依據(jù)的是( )
A.const
B.返回類型
C.參數(shù)個數(shù)
D.參數(shù)類型
11.已知:“int a=5; char c="a";”則輸出語句cout﹤﹤c+1﹤﹤a﹤﹤c;的顯示結(jié)果是( )
A.65a
B.985a
C.98"5"a
D.65"a"
12.下面程序的輸出結(jié)果是( ) #include ﹤iostream﹥ using namespace std; int main( ) { int a=1, b=-2, c=3; if(a﹤b) if(b﹤0) c=0; else c+=1; cout ﹤﹤c﹤﹤endl; return 0; }
A.0
B.2
C.3
D.4
13.C++語言的跳轉(zhuǎn)語句中,對于beak和 continue說法正確的是( )
A.break語句只應(yīng)用于循環(huán)體中
B.continue語句只應(yīng)用于循環(huán)體中
C.break是無條件跳轉(zhuǎn)語句,continue不是
D.break和 continue的跳轉(zhuǎn)范圍不夠明確,容易產(chǎn)生問題
14.下列函數(shù)的說明中,表示純虛函數(shù)的是( )
A.virtual int vf(int)
B.void f(int)=0
C.virtual void vf( )=0
D.virtual void vf(int) { }
15.以下關(guān)于運算符重載的描述中,錯誤的是( )
A.運算符重載其實就是函數(shù)重載
B.成員運算符比友元運算符少一個參數(shù)
C.需要使用關(guān)鍵字operator
D.成員運算符比友元運算符多一個參數(shù)
16.對于下面定義的類Myclass,在函數(shù)f( )中將對象成員n的值修改為50的語句應(yīng)該是( ) class Myclass { public: Myclass( int i) { n=i; } void SetNum(int x) { n=x; } private: int n; }; int f( ) { Myclass *p=new Myclass(45); _________}
A.p-﹥SetNum(50)
B.SetNum(50)
C.p-﹥n=50
D.*p-﹥SetNum (50)
17.下面關(guān)于對象概念的描述中錯誤的是( )
A.任何對象都必須有繼承性
B.對象是屬性和方法的封裝體
C.對象間的通信靠消息傳遞
D.操作是對象的動態(tài)屬性
18.考慮函數(shù)原型void pass(int x, int y=5, char z="*"),下面的函數(shù)調(diào)用中,屬于不合法調(diào)用的是( )
A.pass(5)
B.pass(5, 8)
C.pass(6, "#")
D.pass(0, 0, "*")
19.下列關(guān)于虛函數(shù)的描述中,正確的是( )
A.使用虛函數(shù)就一定產(chǎn)生多態(tài)性
B.虛函數(shù)只能是類中的一個成員函數(shù),但不能是靜態(tài)成員
C.一個類中僅可以聲明一個純虛函數(shù)
D.在構(gòu)造函數(shù)和析構(gòu)函數(shù)中調(diào)用虛函數(shù)采用動態(tài)聯(lián)編
20.有以下程序段,其輸出結(jié)果是( ) #include ﹤iostream﹥ using namespace std; void main( ) { char b[ ] ="Hello, you"; b[5]="!"; cout ﹤﹤b﹤﹤endl; }
A.Hello, you
B.Hello
C.Hello! you
D.!
二、填空題(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上正確答案。錯填、不填均無分。
11.一般C++語言源程序文件的后綴是.cpp;經(jīng)過編譯后,生成文件的后綴是.obj;經(jīng)過連接后,生成文件的后綴是_________。
12.C++語言中提供了3種循環(huán)語句:_________循環(huán)語句、for循環(huán)語句和do_while循環(huán)語句。
13.在“int a=10, *p=&a;”語句中,p的值是_________。
14.執(zhí)行3條語句“int a, b, *c=&a; int *p=c; p=&b;”后,c指向_________。
15.若有以下定義:double w[9];則w數(shù)組元素下標的下限是0,上限是_________。
16.設(shè)int x[3][4]; 則x數(shù)組中含有_________個int類型的數(shù)組元素。
17.將數(shù)學(xué)表達式 寫成C++語言表達式為:_________。
18.模板函數(shù)的真正代碼是在源程序中_________時產(chǎn)生。
19.源程序文檔化要求程序應(yīng)加注釋,注釋一般分為序言性注釋和_________。
110.重載函數(shù)必須有不同的_________。
111.在類中定義和實現(xiàn)的函數(shù)可以成為_________,它能夠加快程序執(zhí)行速度。
112.在C++中輸入輸出是通過流來完成的,輸出操作是將一個對象的狀態(tài)轉(zhuǎn)換成一個_________序列。
113.C++語言中,派生類繼承了基類的全部數(shù)據(jù)成員和除構(gòu)造函數(shù)及_________之外的全部函數(shù)。
114.定義以下變量并假設(shè)已賦確定的值:“ char w; int x; float y; double z;”,則表達式“w*x+z-y”的數(shù)據(jù)類型是_________。
115.若有一個Myclass類,則執(zhí)行語句“MyClass obj1,obj2[2],*p”后,自動調(diào)用該類的構(gòu)造函數(shù)_________次。
116.this指針保證每個對象擁有自己的數(shù)據(jù)成員,又共享處理這些數(shù)據(jù)成員的_________。
117.若有整型變量a=1,b=-2,c=3;則表達式a-b﹥b?c:a+b的值為_________。
118.所謂“引用”就是將一個新標識符和一塊已經(jīng)存在的_________相關(guān)聯(lián),通常用于函數(shù)的參數(shù)表中或者作為函數(shù)的返回值
119.C++為結(jié)構(gòu)動態(tài)分配內(nèi)存的一般格式是“指針名=_________;”,當不再使用這個空間時必須用“delete指針名;”釋放空間。
120.C++程序中使用string類定義存儲字符串的對象時,必須在程序中包含這個類的頭文件,即使用語句_________。
三、改錯題(本大題共5小題,每小題2分,共10分)
21.以下是對類 Sample的定義#include ﹤iostream﹥using namespace std;class Sample{public:Sample(int val);~Sample( );private:float a = 2.5;Sample( );};
22.#include ﹤iostream﹥using namespace std;void swap(int &, int &);void main( ){int a=5, b=10;swap(a, b);cout﹤﹤"a="﹤﹤a﹤﹤",b="﹤﹤b﹤﹤end;}void swap(int x, int y){ int temp;temp =x; x=y; y=temp;}
23.此程序改正后的運行結(jié)果為:1 2 5 11 21#include ﹤iostream﹥using namespace std;int f(int); int main( ){int i;for(i=0; i﹤5; i++)cout﹤﹤f(i)﹤﹤" ";return 0;}int f(int i){int k=1;for(;i﹥0;i--) k+=i;return k;}
24.#include ﹤iostream﹥using namespace std;int main( ){int x=15;while(10﹤x﹤50){x++; if(x/3) { x ++; break; }}cout﹤﹤x﹤﹤endl;return 0;}
25.此程序調(diào)用 findmax( )函數(shù),返回數(shù)組中的最大值。include ﹤iostream﹥using namespace std;int findmax (int *a, int n){int *p, *s;for(p=a, s=a; p-a﹤n; p++)if(*P﹤*s) *s=*p;return(* s);}void main( ){int x[5]={12,2,8,47};cout﹤﹤ findmax(x, 5)﹤﹤endl;}
四、完成程序題(本大題共5小題,每小題4分,共20分)
31.程序在主函數(shù)中創(chuàng)建派生類Derived的對象obj,調(diào)用f( )函數(shù)后輸出DBC#include ﹤iostream﹥using namespace std;class Base{public:virtual void f( ){cout ﹤﹤"B";}};_________{ public:Derived( ) {cout ﹤﹤"D";}virtual void f( ){Base:: f( );cout ﹤﹤"C"; }};int main( ){Base *ptr;Derived obj;ptr=&obj;_________retun 0;}
32.程序的運行結(jié)果為:12#include ﹤iostream﹥using namespace std;class Base{ public:int a; Base (int i) { a=i;}};class Derived:public Base{int a;public:Derived(int x):Base(x) { }void show( ){_________; //輸出基類數(shù)據(jù)成員a的值}};void main( }{ _________ d. show ( );}
33.#include ﹤iostream﹥using namespace std;class F{ public:_________};double F:: operator( ) (double x, double y) const{retum(x+5)*y;}_________{ F f; cout﹤﹤f( 1.5, 2.2)﹤﹤endl;}
34.程序運行結(jié)果為3#include ﹤iostream﹥using namespace std;int main( ){int a=16, b=21, m=0; _________{case 0: m++; break;case 1: m++ ;switch(b%3){_________case 1: m++; break;}}cout ﹤﹤m﹤﹤ endl;return 0;}
35.定義平面上一個點的類point,有雙精度型私有數(shù)據(jù)成員橫坐標x和縱坐標y,公有成員函數(shù)有寫入函數(shù)input( )、求原點距離函數(shù)distance( )和顯示函數(shù)show( ),請完成point( )的類圖。
五、運行結(jié)果題(本大題共2小題,每小題10分,共20分)
41.#include ﹤iostream﹥using namespace std;void sort( int L[ ], int n){int i, k, flag, temp;flag=n-1;while( flag﹥0){ k=flag -1; flag=0;for(j=0; j﹤=k; j++){ if(L[j]﹥L[j+1]){ temp=L[j]; L[j]=L[j+1];L[j+1]=temp; flag =j;}}}}void main( ){ int array[4]={7,2,3,4};sort( array, 4);cout ﹤﹤"The sorted numbers:";for(int i=0; i﹤4; i++)cout ﹤﹤ array[i];}
42.#include ﹤iostream﹥using namespace std;class x{protected: int a; public: x( ) {a=1; }};class x1;virtual public x{ public:x1( ) {a+=1; cout﹤﹤"x1: "﹤﹤a﹤﹤","; }};class x2:virtual public x{public: x2( ) {a+=2; cout﹤﹤"x2: "﹤﹤a﹤﹤","; }};class y:public x1, public x2{public: y( ){ cout ﹤﹤"y: "﹤﹤a﹤﹤ endl; }};void main( ){ y obj; }
六、編寫程序題(本大題共1小題,共10分)
51.定義一個生日類,數(shù)據(jù)成員有年、月、日。定義一個人員類,數(shù)據(jù)成員有姓名、性別、生日。人員類中的生日是生日類的對象,兩個類都有構(gòu)造函數(shù)和顯示函數(shù)。在主函數(shù)中聲明一個人員類對象,屏幕顯示其數(shù)據(jù)。
延伸閱讀
- 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)取