?自考C++程序設計2016年10月試題
摘要:自考C++程序設計2016年10月試題及答案解析,該試卷為自考C++程序設計歷年真題試卷,包含答案及詳細解析。
自考C++程序設計2016年10月試題及答案解析
自考C++程序設計2016年10月試題及答案解析,該試卷為自考C++程序設計歷年真題試卷,包含答案及詳細解析。
一、單項選擇題(本大題共20小題,每小題1分,共20分。)在每小題列出的備選項中只有一項是最符合題目要求的,請將其代碼填寫在題后的括號內。錯選、多選或未選均不得分。
1.一個函數的功能不太復雜,但要求被頻繁調用,選用最適合的是( )
A.內聯函數
B.重載函數
C.遞歸函數
D.嵌套函數
2.假定有類AB,有相應的構造函數定義,能正確執行“AB a(4), b(5), c[3], *p[2]={&a, &b};”語句,請問執行完此語句后共調用該類析構函數的次數為( )
A.14
B.5
C.3
D.1
3.在下面有關析構函數特征的描述中,正確的是( )
A.一個類中可以定義多個析構函數
B.析構函數名與類名完全相同
C.析構函數不能指定返回類型
D.析構函數可以有一個或多個參數
4.派生類的對象對它的哪一類基類成員是可以訪問的( )
A.公有繼承的基類的公有成員
B.公有繼承的基類的保護成員
C.公有繼承的基類的私有成員
D.保護繼承的基類的公有成員
5.如果A是抽象類,則下面正確的是( )
A.A中沒有純虛函數
B.A a;
C.A a[3];
D.A *pa;
6.下列關于純虛函數與抽象類的描述中,錯誤的是( )
A.純虛函數是一種特殊的函數,它允許沒有具體的實現
B.抽象類是指具有純虛函數的類
C.一個基類的說明中有純虛函數,該基類的派生類一定不再是抽象類
D.抽象類只能作為基類來使用,其純虛函數的實現由派生類給出
7.cout是C++的( )
A.關鍵字
B.對象
C.類
D.運算符
8.下列哪個函數不是類的成員函數( )
A.構造函數
B.析構函數
C.友元函數
D.拷貝構造函數
9.下列有關重載函數的說法中錯誤的是( )
A.重載函數必須具有不同的返回值類型
B.重載函數名必須相同
C.重載丞數參數個數可以不同
D.重載函數必須有不同的形參列表
10.下面說法正確的是( )
A.生成對象時調用析構函數
B.定義類時必須寫出該類的構造函數
C.調用構造函數時必須在主函數中明確寫出調用格式
D.析構函數不可以重載
11.在編譯指令中,宏定義使用指令( )
A.#define
B.#include
C.#typedef
D.#friend
12.假設聲明了以下的函數模板,錯誤的調用語句是( ) template ﹤class T﹥ T max(T x, T y) { return (x﹥y)?x:y; } 并定義了int i; char c;
A.max(i,i)
B.max(c,c)
C.max((int)c,i)
D.max(i,c)
13.若有說明:int n=2, *P=&n, *q=p;,則以下非法的賦值語句是( )
A.n=*q
B.p=n
C.p=q
D.*q=*p
14.進行文件操作時需要包含頭文件( )
A.iostream
B.fstream
C.stdio
D.stdlib
15.類模板template ﹤class T﹥classX{…};,其中友元函數f對特定類型T(如int),使函數f(X ﹤int﹥&)成為X﹤int﹥模板類的友元,則其說明應為( )
A.friend void f( );
B.friend void f(X﹤T﹥&);
C.friend void A::f( );
D.friend void C(T);
16.動態編聯所支持的多態性稱為運行時的多態性,支持的函數是( )
A.構造函數
B.友元函數
C.繼承
D.虛函數
17.用運算符delete刪除—個動態對象時( )
A.首先為該動態對象調用構造函數,再釋放其占用的內存
B.首先釋放該動態對象占用的內存,再為其調用構造函數
C.首先為該動態對象調用析構函數,薦釋放其占用的內存
D.首先釋放該動態對象占用的內存,再為其調用析構函數
18.下列字符常量的寫法中,錯誤的是( )
A." "
B."b"
C."*"
D."a"
19.C++類體系中,不能被派生類繼承的有( )
A.靜態數據成員
B.構造函數
C.虛函數
D.靜態成員函數
20.下列對派生類的描述中,錯誤的是( )
A.派生類至少應有一個基類
B.派生類的成員除了自己定義的成員外,還包含了它的基類成員
C.基類中成員訪問權限繼承到派生類中都保持不變
D.一個派生類可以作為另一個派生類的基類
二、填空題(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上正確答案。錯填、不填均無分。
11.C++注釋方式“//”的有效范圍從“//”至________結束。
12.C++程序有且只能有一個名為________的主函數。
13.語句“________;”用來向屏幕輸出顯示信息“Hello!”。
14.所謂“________”就是將一個新標識符和一塊已經存在的存儲區域相關聯。
15.動態分配內存使用關鍵字________,釋放內存使用關鍵字delete。
16.表達式“20/3*sqrt( 4.0)/5”值的數據類型是________。
17.面向對象的程序設計方法是以________代表求解問題的中心環節。
18.對象的________只能由這個對象的操作來存取。
19.使用關鍵字inline說明的函數稱為________函數。
110.類對象一般都包括數據成員和________。
111.將對象作為函數參數,是將實參對象的值傳遞給________。
112.C++函數的返回值類型可以是除________和函數以外的任何類型。
113. 函數重載可使一個函數名具有多種功能,稱這種特性為________。
114.________是類的實例。
115.關鍵字private、public和________以后的成員分別叫做私有成員、公有成員和保護成員。
116. 使用關鍵字const修飾的數據成員稱為________數據成員。
117.對MyFirst類定義析構函數是_________。
118.insert(iterator it, const T&)是向it所指向量位置前_______一個對象。
119.說明純虛函數的一般形式為“class類名{ ________函數類型函數名(參數列表)=0; };”。
120.運算符重載需要使用關鍵字“________”。
三、改錯題(本大題共5小題,每小題2分,共10分)
21.#include ﹤iostream﹥using namespace std;template ﹤T﹥T max(T x, T y){if(x﹥=y) return x;else retum y;}void main( ){cout﹤﹤ max( 6.07, 9.08)﹤﹤ endl; cout﹤﹤ max(20, 50) ﹤﹤ endl;}
22.#include ﹤iostream﹥using namespace std;class Test {public:static int x;};int x=70;void main( ){cout﹤﹤Test:: x;}
23.#include ﹤iostream. h﹥void swap( int &a, int &b){a=a+b;b=a-b;a=a-b;}void main( ){int a =5,b=3;cout﹤﹤"a="﹤﹤a﹤﹤",b="﹤﹤b﹤﹤endl;swap(&a, &b);cout﹤﹤"a="﹤﹤a﹤﹤"b="﹤﹤b﹤﹤ endl;}
24.#include ﹤iostream﹥#include ﹤string﹥using namespace std;int change( string s){s=s+"dog!";cout﹤﹤ s﹤﹤ endl;}void main( ){string str("it is a ");change(str);}
25.#include ﹤iostream. h﹥template ﹤typename AT﹥AT max(AT x, AT y){retum(x﹥y)? x:y; void main( ){int i1=10, i2=56;double d1= 50.344, d2= 56.346;char c1='k', c2='n';cout﹤﹤"較大的整數是:"﹤﹤max(i1, i2)﹤﹤endl; cout﹤﹤"較大的雙精度型數是:"﹤﹤max(d1, a);cout﹤﹤ endl;cout﹤﹤"較大的字符是:"﹤﹤max(c1, c2)﹤﹤endl;}
四、完成程序題(本大題共5小題,每小題4分,共20分)
31.完成程序空白處,可參考以下運行結果:4!=24n=-2!不能計算n!程序執行結束#include ﹤iostream. h﹥int f(int n){if(n﹤=0) throw n;int s=1;for( ________ )s *=i; //計算1*2*3…*n的值 retum s;}void main( ){try{cout﹤﹤________﹤﹤endl;cout﹤﹤"-2!="﹤﹤f(-2)﹤﹤endl;}catch(int n) {cout﹤﹤"n="﹤﹤n﹤﹤"不能計算n!"﹤﹤endl;catch(...) { cout﹤﹤"出現異常!"﹤﹤endl;}cout﹤﹤"程序執行結束"﹤﹤endl;}
32.#include ﹤iostream﹥using namespace std;________ PI= 3.1415;double length( float r) //圓的周長{return 2*PI*r;}________ //矩形的周長 { return 2*(x+y);}void main( ){float a =2, b=3, r=4;cout﹤﹤"圓周長"﹤﹤ length(r)﹤﹤endl;cout﹤﹤"矩形周長"﹤﹤ length(a,b)﹤﹤endl;}
33.程序用于在屏幕上顯示指定的文本文件的內容。#include ﹤iostream﹥#include ﹤fstream﹥using namespace std;int main( ){ifstream ifile;char fn[ 20], ch;cout﹤﹤"輸入文件名"; cin﹥﹥fn;________; //打開指定的文件if(! ifile){cout﹤﹤fn﹤﹤"文件不能打開"﹤﹤endl;retum 0;}while((ch = ifile. get())!=EOF) ________; //輸出字符cout﹤﹤ endl;ifile. close(); //關閉文件return 1;}
34.類book,含有2個數據成員num編號和price價格,有成員函數set和display分別輸入和顯示書的編號和價格,在main中調用所有成員函數。#include ﹤ iostream﹥using namespace std;class book{private: char num[8];public:void set( ){ cin﹥﹥mum﹥﹥price;}void display( ){ cout﹤﹤ num﹤﹤" "﹤﹤ price﹤﹤ endl; }};void main( ){book b; ________;b. display( );}
35.一個通訊錄contacts有姓名name和電話tel兩個屬性,有三個成員函數searehN、insertN和deleteN分別完成查找、插入和刪除功能,請完成contacts的類圖。
五、程序分析題(本大題共2小題,每小題10分,共20分)
41.給出下面程序的輸出結果#include ﹤iostream﹥using namespace std;class Clock {public:Clock( ) {cout﹤﹤"clock的構造函數"﹤﹤endl;}~Clock( ) {cout﹤﹤" clock的析構函數﹤﹤endl; }};class Date{public:Date( ){cout﹤﹤"Date的構造函數"﹤﹤endl;}~Date( ){cout﹤﹤"Date的析構函數"﹤﹤endl;}};void main( ){Clock c;Date d;}
42.給出下面程序的輸出結果#include ﹤iostream﹥using namespace std;void main( ){void sort( int s[ ]);int score[5];int i;for(i=0;i﹤5;i++)score[i]=i;sort( score);cout﹤﹤"運行結果是:";for(i=0;i﹤5;i++)cout﹤﹤score[i]﹤﹤" ";}void sort int s[ ]){int t;for(int i=0; i﹤4; i++)for (int j=i+1; j﹤5; j++)if(s[i]﹤s[j]){t=s[i]; s[i]=s[j]; s[j]=t;}}
六、程序設計題(本大題共1小題,共10分)
51.有一個Person類,私有數據成員name、age和sex分別表示人的姓名、年齡和性別。雇員類Employee是Person的派生類,新增數據成員部門department和薪水salary。請用C++代碼描述這兩個類,并用Employee類的成員函數Display實現雇員的姓名、年齡、性別、部門和薪水的輸出。(要求編寫派生類的構造函數)
延伸閱讀
- 2025年4月自考政治經濟學(中級)全真模擬試題
- 2023年10月自考00257票據法真題
- 2023年10月自考00249國際私法真題
- 2023年10月自考00246國際經濟法概論真題
- 2023年10月自考00245刑法學真題
- 2023年10月自考00186國際商務談判真題
自考微信公眾號
掃碼添加
自考備考資料免費領取
去領取