?自考C++程序設(shè)計2018年4月試題
摘要:自考C++程序設(shè)計2018年4月試題及答案解析,該試卷為自考C++程序設(shè)計歷年真題試卷,包含答案及詳細(xì)解析。
自考C++程序設(shè)計2018年4月試題及答案解析
自考C++程序設(shè)計2018年4月試題及答案解析,該試卷為自考C++程序設(shè)計歷年真題試卷,包含答案及詳細(xì)解析。
一、單項選擇題(本大題共20小題,每小題1分,共20分。)在每小題列出的備選項中只有一項是最符合題目要求的,請將其代碼填寫在題后的括號內(nèi)。錯選、多選或未選均不得分。
1.下列關(guān)于C++標(biāo)識符的命名不合法的是( )
A.Pad
B.name_1
C.A#bc
D._a12
2.若有以下類型標(biāo)識符定義:int x=2; char w=a; float y=23.45f; double z=45.6789; 則表達(dá)式w*x+y-z的結(jié)果類型是( )
A.float
B.char
C.int
D.double
3.局部變量可以隱藏全局變量,那么在有同名全局變量和局部變量的情形時,可以用下列哪一項提供對全局變量的訪問( )
A.作用域運(yùn)算符
B.指針運(yùn)算符
C.提取運(yùn)算符
D.插入運(yùn)算符
4.下列關(guān)于delete運(yùn)算符的描述中,錯誤的是( )
A.它必須用于new返回的指針
B.對一個指針可以使用多次該運(yùn)算符
C.它也適用于空指針
D.指針名前只用一對方括號,不管所刪除數(shù)組的維數(shù)
5.在C++中,類與類之間的繼承關(guān)系具有( )
A.自反性
B.對稱性
C.傳遞性
D.反對稱性
6.對類中聲明的變量,下列描述中正確的是( )
A.屬于全局變量
B.屬于該類,某些情況下也可被該類不同實例所共享
C.只屬于該類
D.任何情況下都可被該類所有實例共享
7.在類定義的外部,可以被訪間的成員有( )
A.所有類成員
B.private或protected的類成員
C.public的類成員
D.public或 private的類成員
8.已知:int m=10; 下列表示引用的方法中,正確的是( )
A.int &z;
B.int &t=1;
C.int &x=m;
D.float &f=&m;
9.對于int *pa[5]; 的描述中,正確的是( )
A.pa是一個指向數(shù)組的指針,所指向的數(shù)組是5個i型元素
B.pa是一個指向某數(shù)組中第5個元素的指針,該元素是int型變量
C.pa[5]表示數(shù)組的第5個元素的值,是int型的值
D.pa是一個具有5個元素的指針數(shù)組,每個元素是一個int型指針
10.下列關(guān)于構(gòu)造函數(shù)的描述中,錯誤的是( )
A.構(gòu)造函數(shù)可以設(shè)置默認(rèn)參數(shù)
B.構(gòu)造函數(shù)在定義類對象時自動執(zhí)行
C.構(gòu)造函數(shù)可以是內(nèi)聯(lián)函數(shù)
D.構(gòu)造函數(shù)不可以重載
11.關(guān)于成員函數(shù)特征的描述中,錯誤的是( )
A.成員函數(shù)一定是內(nèi)聯(lián)函數(shù)
B.成員函數(shù)可以重載
C.成員函數(shù)可以設(shè)置參數(shù)的默認(rèn)值
D.成員函數(shù)可以是靜態(tài)的
12.下列不是函數(shù)重載所要求的條件是( )
A.函數(shù)名相同
B.參數(shù)個數(shù)不同
C.參數(shù)類型不同
D.函數(shù)返回值類型不同
13.下列有關(guān)模板的描述中,錯誤的是( )
A.模板把數(shù)據(jù)類型作為一個設(shè)計參數(shù),稱為參數(shù)化程序設(shè)計
B.使用時,模板參數(shù)與函數(shù)參數(shù)相同,是按位置而不是名稱對應(yīng)的
C.模板實例化參數(shù)類型包括數(shù)據(jù)類型和值
D.類模板與模板類是同一個概念
14.用new運(yùn)算符創(chuàng)建維數(shù)組的正確形式是( )
A.int *p=new a[10];
B.float *p =new float[10];
C.int *p= new float[10];
D.int *p= new int[5]={1,2,3,4,5,6};
15.以下關(guān)于this指針的敘述中,正確的是( )
A.任何與類相關(guān)的函數(shù)都有this指針
B.類的成員函數(shù)都有this指針
C.類的友元函數(shù)都有this指針
D.類的非靜態(tài)成員函數(shù)才有this指針
16.如果有int x, *p; float y, *q; 則下面操作中,正確的是( )
A.p=x
B.p=q
C.p=&x
D.p=&y
17.下列關(guān)于運(yùn)算符重載的表述中,正確的是( )
A.C++已有的任何運(yùn)算符都可以重載
B.運(yùn)算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型
C.在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型
D.可以通過運(yùn)算符重載來創(chuàng)建C++中原來沒有的運(yùn)算符
18.友元運(yùn)算符@obj被C++編譯器解釋為( )
A.operator@(obj)
B.operator@(obj, 0)
C.obj. operator@( )
D.obj. operator@( 0)
19.考慮函數(shù)原型 void test(int a, int b=7, char ch="*"),下面的函數(shù)調(diào)用中,屬于不合法調(diào)用的是( )
A.test(5)
B.test(5, 8)
C.test(6, "#")
D.test(0, 0, "*")
20.使用setw( )時需要包含頭文件( )
A.iostream. h
B.fstream. h
C.iomanip. h
D.stdli
E.h
二、填空題(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上正確答案。錯填、不填均無分。
11.面向?qū)ο蟪绦蛟O(shè)計不僅能進(jìn)行功能抽象,而且能進(jìn)行_________抽象。
12.C++提供的預(yù)處理語句有3種,文件包含、條件編譯和_________。
13.在類體外面定義成員函數(shù)時,必須用關(guān)鍵字_________重寫類模板聲明。
14.輸入流 istream用來處理標(biāo)準(zhǔn)輸入的一個對象的是_________。
15.編譯時的多態(tài)性通過_________函數(shù)實現(xiàn)。
16.假定x=5,y=6, 則表達(dá)式x++*++y的值為_________。
17.在C++程序中,對剛創(chuàng)建的對象進(jìn)行初始化的工作由構(gòu)造函數(shù)來完成;而對象被刪除前的一些清理工作則是由_________函數(shù)來完成的。
18.在用 class定義一個類時,數(shù)據(jù)成員和成員函數(shù)的默認(rèn)訪間權(quán)限是_________。
19.不同對象可以調(diào)用相名稱的函數(shù),但執(zhí)行完全不同行為的現(xiàn)象稱為_________。
110.用new申請某一個類的動態(tài)對象數(shù)組時,在該類中必須能夠匹配到?jīng)]有形參或_________的構(gòu)造函數(shù),否則應(yīng)用程序會產(chǎn)生一個編譯錯誤。
111.在C++中,變量的三個基本要素是指:變量名、變量類型和_________。
112.若有定義int a=3; 則執(zhí)行完語句a+=a-=a*a; 之后,a的值為_________。
113.如果要把 Student類的返回值為void的成員函數(shù) score( ),聲明為類 Teacher的友元函數(shù),則應(yīng)在類 Teacher的定義中加入語句_________。
114.假定x是一個邏輯量,則x&&0的值為_________。
115.構(gòu)造函數(shù)、析構(gòu)函數(shù)和友元函數(shù)中,不是該類成員的是_________。
116.使用對象的引用來初始化創(chuàng)建中的對象的函數(shù)是_________。
117.定義類的動態(tài)對象數(shù)組時,系統(tǒng)只能夠自動調(diào)用該類的_________構(gòu)造函數(shù)對其進(jìn)行初始化。
118.復(fù)制構(gòu)造函數(shù)使用_________作為形式參數(shù)。
119.當(dāng)編譯系統(tǒng)編譯含有虛函數(shù)的類時,將為它建立一個虛函數(shù)表,表中的每一個元素都指向一個_________。
120.在函數(shù)體之前加_________關(guān)鍵字可以防止覆蓋函數(shù)改變數(shù)據(jù)成員的值。
三、改錯題(本大題共5小題,每小題2分,共10分)
21.#include ﹤iostream﹥using namespace std;void setzero(int &a) {a=0;}void main( ){int x=7; y=9;setzero(x);setzero(y);cout ﹤﹤x﹤﹤y ﹤﹤ endl;}
22.#include ﹤ iostream﹥using namespace std;class f{int a, b;public:void set( int aa, int bb) {a=aa; b=bb}void show( ) {cout ﹤﹤a ﹤﹤" "﹤﹤b﹤﹤ endl;}};void main ( ) {f. set(1, 2); f. show( );
23.#include ﹤iostream﹥using namespace std;void main( ){int a=11, b=12;const int *p=a;cout﹤﹤a﹤﹤b﹤*p﹤endl;}
24.#include ﹤iostream﹥using namespace std;void main( ){int a[6]={1,2,3,4,5,6,7};int i; for(i=0; i﹤7; i++)cout ﹤﹤a[li] ﹤﹤ endl;}
25.#include using namespace std;class person{int x; public: void person( ){x=1; }void set( int a) {x=a;}void get( ) {cout ﹤﹤x﹤﹤ endl;}};void main( ){person p;p. set(6);p. get( );}
四、完成程序題(本大題共5小題,每小題4分,共20分)
31.完成程序,使其輸出結(jié)果為28_________using namespace std;int a[8]={1,2,3,4,5,6,7};void fun(int b[ ], int n);void main( ){int m=8; fun(a, m);cout ﹤﹤a[7]﹤﹤ endl;}void fun (int b[ ], int n) {int i; for(_________) b[7]+=b[i];}
32.完成程序,使其輸出結(jié)果為x=30#include "stdafx. h"#include ﹤iostream﹥using namespace std;class Sample{ private:intx; public: Sample( ) {Sample(int a) { x=a;}void disp( ){cout﹤﹤"x="﹤﹤x ﹤﹤ endl;}friend Sample operator+( Sample &s1, Sample &s2);};_________Sample &s1, Sample &s2) {returm Sample(s1. x +s2. x);}void main( ) {Sample obj1(10);Sample obj2(20);Sample obj3;_________; obj3. disp( );}
33.#include ﹤iostream﹥using namespace std;class base{_________;public:base (int x, int y){a=x, b=y; }_________( base &p) {cout ﹤﹤p. a ﹤﹤" "﹤﹤p. b﹤﹤ endl;};void main( ){base b(78, 87); b. show(b);}
34.#include ﹤iostream﹥#include ﹤fstream﹥using namespace std;void main( ){char *p="abcde";_________myf("ab. txt");myf ﹤﹤p; cout﹤﹤"this is a txt file";_________;//關(guān)閉文件ab.txt}
35.完成程序,使其輸出結(jié)果為 n=2,sum=2 n=3,sum=5 n=5,sum=10#include ﹤iostream﹥using namespace std;class Sample {int n;static int sum;public:Sample(int x) {n=x;}void add( ){_________;}void disp( ) {cout ﹤﹤"n="﹤﹤n﹤﹤"sum="﹤﹤sum﹤﹤end;}};_________;void main( ) {Sample a(2), b(3), c(5);a. add( );a. disp( );b. add( );b. disp( );c. add( );c. disp( );}
五、程序分析題(本大題共2小題,每小題10分,共20分)
41.#include ﹤iostream.h﹥using namespace std;void main( ){int a[3][4]={{1,2,7,8},{5,6,11,15},{9,20,3,7}};int m=a[0][0];int i, j;for(i=0; i﹤3; i++)for(j=0; j﹤4; j++)if(a[i][j]﹥m) m=a[i][j];cout﹤﹤"m is:" ﹤﹤endl;cout ﹤﹤m﹤﹤ endl;}
42.#include ﹤ iostream.h﹥using namespace std;class example{ public:example(int n) {i=n; cout﹤﹤"Constructing";}~example( ) {cout ﹤﹤"Destructing";}int get_i( ){return i;}private:int i;};int sqr_int( example o) {retum o. get_i( )*o. get_i( );}void main( ) {example x(10);cout ﹤﹤x. get_i( )﹤﹤ endl;cout ﹤﹤ sqr_it(x)﹤﹤endl;}
六、程序設(shè)計題(本大題共1小題,共10分)
51.聲明一個circle類,有數(shù)據(jù)成員Radius(半徑, foat型),成員函數(shù)GetArea( )計算圓的面積。在main函數(shù)中聲明一個circle類的對象c1,其半徑為5.6。調(diào)用 GetArea( )函數(shù)計算c1的面積,并顯示該計算結(jié)果(cout﹤"圓的面積:"﹤﹤c1. Getarea﹤endl;)。
延伸閱讀
- 2023年10月自考00257票據(jù)法真題
- 2023年10月自考00249國際私法真題
- 2023年10月自考00246國際經(jīng)濟(jì)法概論真題
- 2023年10月自考00245刑法學(xué)真題
- 2023年10月自考00186國際商務(wù)談判真題
- 2023年10月自考00185商品流通概論真題
自考微信公眾號
掃碼添加
自考備考資料免費領(lǐng)取
去領(lǐng)取