?自考C++程序設計2016年10月試題
摘要:自考C++程序設計2016年10月試題及答案解析,該試卷為自考C++程序設計歷年真題試卷,包含答案及詳細解析。
自考C++程序設計2016年10月試題及答案解析
自考C++程序設計2016年10月試題及答案解析,該試卷為自考C++程序設計歷年真題試卷,包含答案及詳細解析。
一、單項選擇題(本大題共20小題,每小題1分,共20分。)在每小題列出的備選項中只有一項是最符合題目要求的,請將其代碼填寫在題后的括號內(nèi)。錯選、多選或未選均不得分。
1.一個函數(shù)的功能不太復雜,但要求被頻繁調(diào)用,選用最適合的是( )
A.內(nèi)聯(lián)函數(shù)
B.重載函數(shù)
C.遞歸函數(shù)
D.嵌套函數(shù)
2.假定有類AB,有相應的構(gòu)造函數(shù)定義,能正確執(zhí)行“AB a(4), b(5), c[3], *p[2]={&a, &b};”語句,請問執(zhí)行完此語句后共調(diào)用該類析構(gòu)函數(shù)的次數(shù)為( )
A.14
B.5
C.3
D.1
3.在下面有關析構(gòu)函數(shù)特征的描述中,正確的是( )
A.一個類中可以定義多個析構(gòu)函數(shù)
B.析構(gòu)函數(shù)名與類名完全相同
C.析構(gòu)函數(shù)不能指定返回類型
D.析構(gòu)函數(shù)可以有一個或多個參數(shù)
4.派生類的對象對它的哪一類基類成員是可以訪問的( )
A.公有繼承的基類的公有成員
B.公有繼承的基類的保護成員
C.公有繼承的基類的私有成員
D.保護繼承的基類的公有成員
5.如果A是抽象類,則下面正確的是( )
A.A中沒有純虛函數(shù)
B.A a;
C.A a[3];
D.A *pa;
6.下列關于純虛函數(shù)與抽象類的描述中,錯誤的是( )
A.純虛函數(shù)是一種特殊的函數(shù),它允許沒有具體的實現(xiàn)
B.抽象類是指具有純虛函數(shù)的類
C.一個基類的說明中有純虛函數(shù),該基類的派生類一定不再是抽象類
D.抽象類只能作為基類來使用,其純虛函數(shù)的實現(xiàn)由派生類給出
7.cout是C++的( )
A.關鍵字
B.對象
C.類
D.運算符
8.下列哪個函數(shù)不是類的成員函數(shù)( )
A.構(gòu)造函數(shù)
B.析構(gòu)函數(shù)
C.友元函數(shù)
D.拷貝構(gòu)造函數(shù)
9.下列有關重載函數(shù)的說法中錯誤的是( )
A.重載函數(shù)必須具有不同的返回值類型
B.重載函數(shù)名必須相同
C.重載丞數(shù)參數(shù)個數(shù)可以不同
D.重載函數(shù)必須有不同的形參列表
10.下面說法正確的是( )
A.生成對象時調(diào)用析構(gòu)函數(shù)
B.定義類時必須寫出該類的構(gòu)造函數(shù)
C.調(diào)用構(gòu)造函數(shù)時必須在主函數(shù)中明確寫出調(diào)用格式
D.析構(gòu)函數(shù)不可以重載
11.在編譯指令中,宏定義使用指令( )
A.#define
B.#include
C.#typedef
D.#friend
12.假設聲明了以下的函數(shù)模板,錯誤的調(diào)用語句是( ) 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{…};,其中友元函數(shù)f對特定類型T(如int),使函數(shù)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.動態(tài)編聯(lián)所支持的多態(tài)性稱為運行時的多態(tài)性,支持的函數(shù)是( )
A.構(gòu)造函數(shù)
B.友元函數(shù)
C.繼承
D.虛函數(shù)
17.用運算符delete刪除—個動態(tài)對象時( )
A.首先為該動態(tài)對象調(diào)用構(gòu)造函數(shù),再釋放其占用的內(nèi)存
B.首先釋放該動態(tài)對象占用的內(nèi)存,再為其調(diào)用構(gòu)造函數(shù)
C.首先為該動態(tài)對象調(diào)用析構(gòu)函數(shù),薦釋放其占用的內(nèi)存
D.首先釋放該動態(tài)對象占用的內(nèi)存,再為其調(diào)用析構(gòu)函數(shù)
18.下列字符常量的寫法中,錯誤的是( )
A." "
B."b"
C."*"
D."a"
19.C++類體系中,不能被派生類繼承的有( )
A.靜態(tài)數(shù)據(jù)成員
B.構(gòu)造函數(shù)
C.虛函數(shù)
D.靜態(tài)成員函數(shù)
20.下列對派生類的描述中,錯誤的是( )
A.派生類至少應有一個基類
B.派生類的成員除了自己定義的成員外,還包含了它的基類成員
C.基類中成員訪問權限繼承到派生類中都保持不變
D.一個派生類可以作為另一個派生類的基類
二、填空題(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上正確答案。錯填、不填均無分。
11.C++注釋方式“//”的有效范圍從“//”至________結(jié)束。
12.C++程序有且只能有一個名為________的主函數(shù)。
13.語句“________;”用來向屏幕輸出顯示信息“Hello!”。
14.所謂“________”就是將一個新標識符和一塊已經(jīng)存在的存儲區(qū)域相關聯(lián)。
15.動態(tài)分配內(nèi)存使用關鍵字________,釋放內(nèi)存使用關鍵字delete。
16.表達式“20/3*sqrt( 4.0)/5”值的數(shù)據(jù)類型是________。
17.面向?qū)ο蟮某绦蛟O計方法是以________代表求解問題的中心環(huán)節(jié)。
18.對象的________只能由這個對象的操作來存取。
19.使用關鍵字inline說明的函數(shù)稱為________函數(shù)。
110.類對象一般都包括數(shù)據(jù)成員和________。
111.將對象作為函數(shù)參數(shù),是將實參對象的值傳遞給________。
112.C++函數(shù)的返回值類型可以是除________和函數(shù)以外的任何類型。
113. 函數(shù)重載可使一個函數(shù)名具有多種功能,稱這種特性為________。
114.________是類的實例。
115.關鍵字private、public和________以后的成員分別叫做私有成員、公有成員和保護成員。
116. 使用關鍵字const修飾的數(shù)據(jù)成員稱為________數(shù)據(jù)成員。
117.對MyFirst類定義析構(gòu)函數(shù)是_________。
118.insert(iterator it, const T&)是向it所指向量位置前_______一個對象。
119.說明純虛函數(shù)的一般形式為“class類名{ ________函數(shù)類型函數(shù)名(參數(shù)列表)=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﹤﹤"較大的整數(shù)是:"﹤﹤max(i1, i2)﹤﹤endl; cout﹤﹤"較大的雙精度型數(shù)是:"﹤﹤max(d1, a);cout﹤﹤ endl;cout﹤﹤"較大的字符是:"﹤﹤max(c1, c2)﹤﹤endl;}
四、完成程序題(本大題共5小題,每小題4分,共20分)
31.完成程序空白處,可參考以下運行結(jié)果:4!=24n=-2!不能計算n!程序執(zhí)行結(jié)束#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﹤﹤"出現(xiàn)異常!"﹤﹤endl;}cout﹤﹤"程序執(zhí)行結(jié)束"﹤﹤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.程序用于在屏幕上顯示指定的文本文件的內(nèi)容。#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個數(shù)據(jù)成員num編號和price價格,有成員函數(shù)set和display分別輸入和顯示書的編號和價格,在main中調(diào)用所有成員函數(shù)。#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兩個屬性,有三個成員函數(shù)searehN、insertN和deleteN分別完成查找、插入和刪除功能,請完成contacts的類圖。
五、程序分析題(本大題共2小題,每小題10分,共20分)
41.給出下面程序的輸出結(jié)果#include ﹤iostream﹥using namespace std;class Clock {public:Clock( ) {cout﹤﹤"clock的構(gòu)造函數(shù)"﹤﹤endl;}~Clock( ) {cout﹤﹤" clock的析構(gòu)函數(shù)﹤﹤endl; }};class Date{public:Date( ){cout﹤﹤"Date的構(gòu)造函數(shù)"﹤﹤endl;}~Date( ){cout﹤﹤"Date的析構(gòu)函數(shù)"﹤﹤endl;}};void main( ){Clock c;Date d;}
42.給出下面程序的輸出結(jié)果#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﹤﹤"運行結(jié)果是:";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類,私有數(shù)據(jù)成員name、age和sex分別表示人的姓名、年齡和性別。雇員類Employee是Person的派生類,新增數(shù)據(jù)成員部門department和薪水salary。請用C++代碼描述這兩個類,并用Employee類的成員函數(shù)Display實現(xiàn)雇員的姓名、年齡、性別、部門和薪水的輸出。(要求編寫派生類的構(gòu)造函數(shù))
延伸閱讀
- 2023年10月自考00257票據(jù)法真題
- 2023年10月自考00249國際私法真題
- 2023年10月自考00246國際經(jīng)濟法概論真題
- 2023年10月自考00245刑法學真題
- 2023年10月自考00186國際商務談判真題
- 2023年10月自考00185商品流通概論真題
自考微信公眾號
掃碼添加
自考備考資料免費領取
去領取