?自考C++程序設計2013年10月試題
摘要:自考C++程序設計2013年10月試題及答案解析,該試卷為自考C++程序設計歷年真題試卷,包含答案及詳細解析。
自考C++程序設計2013年10月試題及答案解析
自考C++程序設計2013年10月試題及答案解析,該試卷為自考C++程序設計歷年真題試卷,包含答案及詳細解析。
一、單項選擇題(本大題共20小題,每小題1分,共20分。)在每小題列出的備選項中只有一項是最符合題目要求的,請將其代碼填寫在題后的括號內。錯選、多選或未選均不得分。
1.下列不屬于C++關鍵字的是( )
A.extern
B.goto
C.free
D.default
2.C++中定義標準輸入的庫為( )
A.stdio
B.math
C.istream
D.stdlib
3.My是一個類,則執行語句My a[3], *[2]; 之后,自動調用構造函數次數為( )
A.2
B.3
C.4
D.5
4.下列語句錯誤的是( )
A.int val(20);
B.extern int val(20);
C.const int val;
D.extern const int val;
5.下列說法中,有關構造函數是正確的是( )
A.任何一類必定有構造函數
B.可定義沒有構造函數的類
C.構造函數不能重載
D.任何一類必定有缺省的構造函數
6.下面關于類和對象說法不正確是( )
A.類由數據與函數組成
B.一個對象必屬于某個類
C.對象是類的實例
D.一個類的對象只有一個
7.下面選項中不是類成員函數的是( )
A.構造函數
B.析構函數
C.友元函數
D.靜態函數
8.在C++中類之間的繼承關系具有( )
A.自反性
B.對稱性
C.傳遞性
D.反對稱性
9.C++中類的成員默認為( )
A.public
B.private
C.protected
D.static
10.C++中要實現動態聯編,調用虛函數時必須使用( )
A.基類指針
B.類名
C.派生類指針
D.對象名
11.下面對析構函數的正確描述是( )
A.系統不能提供默認的析構函數
B.析構函數必須由用戶定義
C.析構函數沒有參數
D.析構函數可以設置默認參數
12.在下面的二維數定義正確的是( )
A.int ary[5][ ];
B.int ary[ ][5]={{0,1,2}};
C.int ary[ ][5];
D.int ary[5,5];
13.以下說法中正確的是( )
A.C++程序總是從第一個定義的函數開始執行
B.C++程序總是從main函數開始執行
C.C++中函數必須有返回值
D.C++中函數名必須唯一
14.對C++中主函數描述正確的是( )
A.名稱為main,可為多個
B.名稱不限,可為多個
C.名稱為main,必須有且只能有—個
D.名稱不限,必須有且只能有—個
15.下面聲明純虛函數語句正確的是( )
A.void fun( )=0;
B.virtual void fun( )=0;
C.virtual void fun( );
D.virtual void fun( ){ };
16.對于拷貝構造函數和賦值操作的關系,正確的描述是( )
A.拷貝構造函數和賦值操作是完全一樣的操作
B.進行賦值操作時,不會調用類的構造函數
C.當調用拷貝構造函數時,類的對象正在被建立并被初始化
D.拷貝構造函數和賦值操作不能在同一個類中被同時定義
17.使用重載函數的目的是( )
A.共享函數數據
B.減少代碼量
C.優化運行效率
D.提高可讀性
18.C++語言對C語言做了很多改進,C++語言相對于C語言的最根本的變化是( )
A.增加了一些新的運算符
B.允許函數重載,并允許設置缺省參數
C.規定函數說明符必須用原型
D.引進了類和對象的概念
19.假定有“char *p="Hello";”,若要輸出這個字符串的地址值正確的寫法為( )
A.cout﹤﹤*p;
B.cout﹤﹤p;
C.cout﹤﹤&p;
D.cout﹤﹤(void*)p;
20.從本質上看,引用變量是被引用變量的( )
A.拷貝
B.別名
C.復制
D.克隆
二、填空題(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上正確答案。錯填、不填均無分。
11.C++程序的編譯是以_________為單位進行的。
12.C++語言支持的兩種多態性分別是編譯時的多態性和_________的多態性。
13.重載的運算符保持其原有的操作符個數、_________和結合性不變。
14.在C++中,函數的參數有兩種傳遞方式,它們分別是值傳遞和_________。
15.含有_________的類稱為抽象類。
16.C++程序運行時的內存空間可以分成全局數據區,堆區,棧區和_________。
17.對于無返回值函數,定義函數時要用_________修飾函數類型。
18.定義重載函數必須在參數的個數或參數的_________上與其它同名函數不同。
19.拷貝構造函數是在用一個對象初始化另一個對象時被調用,系統缺省的拷貝構造函數的工作方法是_________。
110.以面向對象方法構造的系統,其基本單位是_________。
111.C++中定義友元函數使用的關鍵字為_________。
112.當一個成員函數被調用時,該成員函數的_________指向調用它的對象。
113.類可將實現細節隱藏起來,這種機制稱為_________。
114.在面向對象的程序設計中,通過封裝實現數據隱藏;通過_________實現代碼的復用。
115.在公有繼承的中基類數據成員在派生類中的訪問權限_________。
116.復雜對象可以由簡單對象構成,這種現象稱為_________。
117.如有“char *p="Hello";”,則語句“cout﹤﹤*(p+1);”輸出值是_________。
118.基類和派生類的關系稱為_________。
119.C++對其對象的數據成員和成員函數的訪問是通過_________來限制的。
120.假定x=10,則表達式x﹤=10?20:30的值為_________。
三、改錯題(本大題共5小題,每小題2分,共10分)
21.#include ﹤iostream.h﹥ class point { private: float x, y; public: point(float a, float b){x=a; y=b;} void f( ){x=0; y=0;} void getx( ){cout﹤﹤x﹤﹤endl; void gety( ){cout﹤﹤y﹤﹤endl; }; main( ) { point a( 3.5); a.getx( ); }
22.#include ﹤iostream.h﹥ main( ){ int x=7; const int *p=&x; *p=99; cout﹤﹤*p﹤﹤endl; }
23.#include ﹤iostream.h﹥ class test{ private: int x; y; public: void f(int a, int b){x=a; y=b;} int max( ){return(x﹥y)?x:y;} }; main( ){ test a; a.f(1,3); cout﹤﹤a.max( )﹤﹤endl; }
24.#include ﹤iostream.h﹥ class test{ private: int x; public: test(int a){x=a;} void set(int a){x=a;} void get( ){cout﹤﹤x﹤﹤endl; }; class test1: public test{ private: int x; public: test1(int a){x=a;} void set(int a){x=a;} void get( ){cout﹤﹤′ ′﹤﹤endl; };
25.#include ﹤iostream.h﹥ class f{ private: int x,y; public: f1(int a, int b){x=a; y=b;} void print( ){cout﹤﹤x--﹤﹤y﹤﹤endl; }; main( ){ f a; float x= 1.0, y= 2.0; a.f1(x,y); a.print( ); }
四、完成程序題(本大題共5小題,每小題4分,共20分)
31.在答題紙上填上缺少的部分。源程序如下: #include ﹤iostream﹥ using namespace std; class base { int a, b; public: base(int x, int y){a=x; b=y;} void show( _________ ) { cout﹤﹤p.a﹤﹤″,″﹤﹤p.b﹤﹤endl; } }_________ void main( ) { base b(78,87); b.show(b); }
32.在答題紙上填上缺少的部分。源程序如下: #include ﹤iostream﹥ #include ﹤fstream﹥ using namespace std; void main( ) { _________ myf("aB.txt"); //定義輸出流文件,并初始化 _________﹤﹤"This ia a TXT file"; //向文件輸入字符串 myf.close( ); }
33.在下面程序中的答題紙上填上適當的程序,使程序的輸出結果如下: 67,90 源程序如下: #include ﹤iostream﹥ using namespace std; class base { pnvate: int x,y; priblic: void initxy(int a,int b){x=a;y=b;} void show(base *p); }; inline void base::show( _________ ) { cout﹤﹤p-﹥x﹤﹤" "﹤﹤p-﹥y﹤﹤endl; } void print(base *p) { p-﹥show(p); } void main( ) { base a; a.initxy(67,90); print( _________ ); }
34.下面程序給出了一個從普通的基類派生出一個模板類的方法,在答題紙上填上缺少的部分。 #include ﹤iostream﹥ using namespace std; class Base { public: Base(int a){x=a;} int Getx( ){return x; void showb( ){cout﹤﹤x﹤﹤endl; private: int x; }; template﹤class T﹥ class derived: public Base { public: derived(T a, int b): _________ { y=a; } T Gety( ){ return y; } void showd( ){cout﹤﹤y﹤﹤" "﹤﹤Gets( )﹤﹤endl; private: _________ }; void main( ) { Base A(458); A. showb( ); derived ﹤char *﹥B("It is",1357); B.showd( ); }
35.下面程序的運行結果如下: 20,22 60,22 在答題紙上填上缺少的部分。源程序如下: #include ﹤iostream﹥ using namespace std; class base { private: const int a; static const int b; public: base(int); void Show( ); }; _________=22; _________ : a(i){ } //初始化 void base:: Show( ) { cout﹤﹤a﹤﹤","﹤﹤b﹤﹤endl; } void main( ) { base a1(20), a2(60); a 1.Show( ); a 2.Show( ); }
五、程序分析題(本大題共2小題,每小題10分,共20分)
41.給出下面程序的輸出結果 #include ﹤iostream﹥ using namespace std; class base { int x; public: void setx(int a){x=a;} int getx( ){return x;} }; void main( ) { int *p; base a; a.setx(15); p=new int(a.getx( )); cout﹤﹤*p; }
42.給出下面程序的輸出結果 #include ﹤iostream﹥ using namespace std; class base { private: int x; public: void setx(int a){x=a;} int getx( ){return x;} }; void main( ) { base a, b; a.setx(89); b=a; cout﹤﹤a.getx( )﹤﹤endl; cout﹤﹤b.getx( )﹤﹤endl; }
六、程序設計題(本大題共1小題,共10分)
51.在字符串類string中實現一個判斷函數,該函數功能是統計某一字符串類對象(僅有單詞和空格組成)有多少個單詞,同時保存所有單詞在字符串中的起始地址(設該字符串不超過100個單詞) #include ﹤iostream﹥ #include ﹤string﹥ class str{ string s; int n, a[100], j, l; public: str(string &a){s=a; n=0; j=0; l=0;} ....test(....); int *geta( ){return a;} }; 請寫出test函數的過程(如果需要形式參數,請給出形參類型和數量,以及返回值類型)
延伸閱讀
- 2025年4月自考政治經濟學(中級)全真模擬試題
- 2023年10月自考00257票據法真題
- 2023年10月自考00249國際私法真題
- 2023年10月自考00246國際經濟法概論真題
- 2023年10月自考00245刑法學真題
- 2023年10月自考00186國際商務談判真題
自考微信公眾號
掃碼添加
自考備考資料免費領取
去領取