?自考C++程序設計2017年4月試題
摘要:自考C++程序設計2017年4月試題及答案解析,該試卷為自考C++程序設計歷年真題試卷,包含答案及詳細解析。
自考C++程序設計2017年4月試題及答案解析
自考C++程序設計2017年4月試題及答案解析,該試卷為自考C++程序設計歷年真題試卷,包含答案及詳細解析。
一、單項選擇題(本大題共20小題,每小題1分,共20分。)在每小題列出的備選項中只有一項是最符合題目要求的,請將其代碼填寫在題后的括號內。錯選、多選或未選均不得分。
1.以下說法中不正確的是( )
A.C++程序中必須有一個主函數main( ),而且是從main( )的第一條語句開始執行
B.非主函數都是在執行主函數時,通過函數調用或嵌套調用而得以執行的
C.主函數可以在任何地方出現
D.主函數必須出現在固定位置
2.若有定義int *p= new int(0),則下列說法正確的是( )
A.系統用指針變量p來表示所指整型變量
B.聲明一個指針變量p,指向名為new的存儲單元
C.系統為指針變量p分配一個整型數據的存儲空間
D.通過運算符new,分配一個整型數據的存儲空間,并將其內存地址賦予指針變量
3.以下有關類與對象的敘述中,錯誤的是( )
A.對象是類的一個實例
B.一個類可以有多個對象
C.任何一個對象都歸屬于一個具體的類
D.只要是某個類的對象,那么該對象就可以訪問這個類的所有成員
4.以下有關構造函數的敘述中,錯誤的是( )
A.構造函數名必須和類名一致
B.構造函數在定義對象時自動執行
C.在一個類中構造函數有且僅有一個
D.構造函數可以在類體內聲明在類體外實現
5.以下敘述中正確的是( )
A.類成員的定義必須放在類體內部
B.在類中,不作特別說明的數據成員均為私有類型
C.在類中,不作特別說明的數據成員均為公有類型
D.類成員的定義必須是成員變量在前,成員函數在后
6.友元函數的主要作用是( )
A.提高程序的效率
B.加強類的封裝性
C.實現數據的隱蔽性
D.增加成員函數的種類
7.在C++中,字符型數據在內存中的存放形式為( )
A.原碼
B.BCD碼
C.ASCII碼
D.反碼
8.下列變量命名中,非法的是( )
A.A**LONG
B.MyCar
C.my_car
D.a48
9.關于對類的描述中,錯誤的是( )
A.類是創建對象的樣板
B.類是具有唯一標識符的實體
C.類就是C語言中的結構類型
D.類是具有共同行為的若千對象的統一描述體
10.不能作為函數重載的判斷依據的是( )
A.const
B.返回類型
C.參數個數
D.參數類型
11.已知:“int a=5; char c="a";”則輸出語句cout﹤﹤c+1﹤﹤a﹤﹤c;的顯示結果是( )
A.65a
B.985a
C.98"5"a
D.65"a"
12.下面程序的輸出結果是( ) #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++語言的跳轉語句中,對于beak和 continue說法正確的是( )
A.break語句只應用于循環體中
B.continue語句只應用于循環體中
C.break是無條件跳轉語句,continue不是
D.break和 continue的跳轉范圍不夠明確,容易產生問題
14.下列函數的說明中,表示純虛函數的是( )
A.virtual int vf(int)
B.void f(int)=0
C.virtual void vf( )=0
D.virtual void vf(int) { }
15.以下關于運算符重載的描述中,錯誤的是( )
A.運算符重載其實就是函數重載
B.成員運算符比友元運算符少一個參數
C.需要使用關鍵字operator
D.成員運算符比友元運算符多一個參數
16.對于下面定義的類Myclass,在函數f( )中將對象成員n的值修改為50的語句應該是( ) 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.下面關于對象概念的描述中錯誤的是( )
A.任何對象都必須有繼承性
B.對象是屬性和方法的封裝體
C.對象間的通信靠消息傳遞
D.操作是對象的動態屬性
18.考慮函數原型void pass(int x, int y=5, char z="*"),下面的函數調用中,屬于不合法調用的是( )
A.pass(5)
B.pass(5, 8)
C.pass(6, "#")
D.pass(0, 0, "*")
19.下列關于虛函數的描述中,正確的是( )
A.使用虛函數就一定產生多態性
B.虛函數只能是類中的一個成員函數,但不能是靜態成員
C.一個類中僅可以聲明一個純虛函數
D.在構造函數和析構函數中調用虛函數采用動態聯編
20.有以下程序段,其輸出結果是( ) #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;經過編譯后,生成文件的后綴是.obj;經過連接后,生成文件的后綴是_________。
12.C++語言中提供了3種循環語句:_________循環語句、for循環語句和do_while循環語句。
13.在“int a=10, *p=&a;”語句中,p的值是_________。
14.執行3條語句“int a, b, *c=&a; int *p=c; p=&b;”后,c指向_________。
15.若有以下定義:double w[9];則w數組元素下標的下限是0,上限是_________。
16.設int x[3][4]; 則x數組中含有_________個int類型的數組元素。
17.將數學表達式 寫成C++語言表達式為:_________。
18.模板函數的真正代碼是在源程序中_________時產生。
19.源程序文檔化要求程序應加注釋,注釋一般分為序言性注釋和_________。
110.重載函數必須有不同的_________。
111.在類中定義和實現的函數可以成為_________,它能夠加快程序執行速度。
112.在C++中輸入輸出是通過流來完成的,輸出操作是將一個對象的狀態轉換成一個_________序列。
113.C++語言中,派生類繼承了基類的全部數據成員和除構造函數及_________之外的全部函數。
114.定義以下變量并假設已賦確定的值:“ char w; int x; float y; double z;”,則表達式“w*x+z-y”的數據類型是_________。
115.若有一個Myclass類,則執行語句“MyClass obj1,obj2[2],*p”后,自動調用該類的構造函數_________次。
116.this指針保證每個對象擁有自己的數據成員,又共享處理這些數據成員的_________。
117.若有整型變量a=1,b=-2,c=3;則表達式a-b﹥b?c:a+b的值為_________。
118.所謂“引用”就是將一個新標識符和一塊已經存在的_________相關聯,通常用于函數的參數表中或者作為函數的返回值
119.C++為結構動態分配內存的一般格式是“指針名=_________;”,當不再使用這個空間時必須用“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.此程序改正后的運行結果為: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.此程序調用 findmax( )函數,返回數組中的最大值。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.程序在主函數中創建派生類Derived的對象obj,調用f( )函數后輸出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.程序的運行結果為: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( ){_________; //輸出基類數據成員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.程序運行結果為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,有雙精度型私有數據成員橫坐標x和縱坐標y,公有成員函數有寫入函數input( )、求原點距離函數distance( )和顯示函數show( ),請完成point( )的類圖。
五、運行結果題(本大題共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.定義一個生日類,數據成員有年、月、日。定義一個人員類,數據成員有姓名、性別、生日。人員類中的生日是生日類的對象,兩個類都有構造函數和顯示函數。在主函數中聲明一個人員類對象,屏幕顯示其數據。
延伸閱讀
- 2025年4月自考政治經濟學(中級)全真模擬試題
- 2023年10月自考00257票據法真題
- 2023年10月自考00249國際私法真題
- 2023年10月自考00246國際經濟法概論真題
- 2023年10月自考00245刑法學真題
- 2023年10月自考00186國際商務談判真題
自考微信公眾號
掃碼添加
自考備考資料免費領取
去領取