?自考C++程序設(shè)計(jì)2016年4月試題
摘要:自考C++程序設(shè)計(jì)2016年4月試題及答案解析,該試卷為自考C++程序設(shè)計(jì)歷年真題試卷,包含答案及詳細(xì)解析。
自考C++程序設(shè)計(jì)2016年4月試題及答案解析
自考C++程序設(shè)計(jì)2016年4月試題及答案解析,該試卷為自考C++程序設(shè)計(jì)歷年真題試卷,包含答案及詳細(xì)解析。
一、單項(xiàng)選擇題(本大題共20小題,每小題1分,共20分。)在每小題列出的備選項(xiàng)中只有一項(xiàng)是最符合題目要求的,請(qǐng)將其代碼填寫在題后的括號(hào)內(nèi)。錯(cuò)選、多選或未選均不得分。
1.要求指針p既不可修改其本身的內(nèi)容,也不可修改其所指向地址的內(nèi)容,定義正確的( )
A.const char *p="ABCD";
B.char *const p="ABCD";
C.char const *p="ABCD";
D.const char * const p="ABCD";
2.在C++中,類與類之間的繼承關(guān)系具有( )
A.自反性
B.對(duì)稱性
C.傳遞性
D.反對(duì)稱性
3.下列關(guān)于對(duì)靜態(tài)數(shù)據(jù)成員的描述中,正確的是( )
A.靜態(tài)數(shù)據(jù)成員不能用 public控制符修飾
B.靜態(tài)數(shù)據(jù)成員可以直接用類名或者對(duì)象名來調(diào)用
C.靜態(tài)數(shù)據(jù)成員不可以被類的對(duì)象調(diào)用
D.靜態(tài)數(shù)據(jù)成員不能用 private控制符修飾
4.適宜采用inline定義函數(shù)情況是( )
A.函數(shù)體含有循環(huán)語句
B.函數(shù)體含有遞歸語句
C.函數(shù)代碼多、不常調(diào)用
D.函數(shù)代碼少、頻繁調(diào)用
5.通??截悩?gòu)造函數(shù)的參數(shù)是( )
A.某個(gè)對(duì)象的成員名
B.某個(gè)對(duì)象的指針名
C.某個(gè)對(duì)象的引用名
D.某個(gè)對(duì)象名
6.下列不是類的成員函數(shù)的( )
A.友元函數(shù)
B.構(gòu)造函數(shù)
C.析構(gòu)函數(shù)
D.拷貝構(gòu)造函數(shù)
7.類Cat是類Animal的公有派生類,類Animal和類Cat中都定義了虛函數(shù)func( ),p是一個(gè)指向類Animal對(duì)象的指針,則p-﹥Animal:: func( )將( )
A.調(diào)用類Animal中的函數(shù)func( )
B.調(diào)用類Cat中的函數(shù)func( )
C.根據(jù)p所指的對(duì)象類型而確定調(diào)用類Animal中或類Cat中的函數(shù)func( )
D.既調(diào)用類 Animal中函數(shù),也調(diào)用類Cat中的函數(shù)
8.如果表達(dá)式++a中的“+”是作為成員函數(shù)重載的運(yùn)算符,若采用運(yùn)算符函數(shù)調(diào)用格式,則可表示為( )
A.operator ++(1)
B.operator ++(a)
C.operator ++(a, 1)
D.operator ++( )
9.實(shí)現(xiàn)兩個(gè)相同類型數(shù)加法的函數(shù)模板的聲明是( )
A.add(T x, T y)
B.T add(x, y)
C.T add(T x, y)
D.T add(T x,T y)
10.以下基類中的成員函數(shù)表示純虛函數(shù)的是( )
A.virtual void vf(int)
B.void vf(int)=0
C.virtual void vf( )=0
D.virtual void yf( int) { }
11.假定一個(gè)類的構(gòu)造函數(shù)為A(int aa, int bb) { a=aa++; b=a*++bb;},則執(zhí)行A x(4,5);語句后,x.a和x.b的值分別為( )
A.4和5
B.4和20
C.4和24
D.20和5
12.下列運(yùn)算符中,在C++語言中不能重載的是( )
A.*
B.﹥=
C.::
D./
13.在編譯指令中,宏定義使用哪個(gè)指令( )
A.#if
B.#include
C.#define
D.#error
14.以下能正確定義數(shù)組并正確賦初值的語句是( )
A.int N=5, b[N][N];
B.int a[2]={{1},{3},{4},{5}};
C.int c[2][ ]={{1,2},{3,4}};
D.int d[3][2]={{1,2},{3,4}};
15.關(guān)于函數(shù)模板,描述錯(cuò)誤的是( )
A.函數(shù)模板必須由程序員實(shí)例化為可執(zhí)行的函數(shù)模板;
B.函數(shù)模板的實(shí)例化由編譯器實(shí)現(xiàn);
C.一個(gè)類定義中,只要有一個(gè)函數(shù)模板,則這個(gè)類是類模板;
D.類模板的成員函數(shù)都是函數(shù)模板,類模板實(shí)例化后,成員函數(shù)也隨之實(shí)例化;
16.按照標(biāo)識(shí)符的要求,不能組成標(biāo)識(shí)符的是( )
A.連接符
B.下劃線
C.大小寫字母
D.數(shù)字字母
17.已知類A是類B的友元,類B是類C的友元,則( )
A.類A一定是類C的友元
B.類C一定是類A的友元
C.類C的成員函數(shù)可以訪問類B的對(duì)象的任何成員
D.類A的成員函數(shù)可以訪問類B的對(duì)象的任何成員
18.已知:p是一個(gè)指向類A數(shù)據(jù)成員m的指針,A1是類A的一個(gè)對(duì)象。如果要給m賦值為5,正確的是( )
A.A
1.p=5;
B.A1-﹥p=5;
C.A
1.*p=5;
D.*A1.p=5;
19.關(guān)于this指針的說法錯(cuò)誤的是( )
A.this指針必須顯式聲明
B.當(dāng)創(chuàng)建一個(gè)對(duì)象后,this指針就指向該對(duì)象
C.動(dòng)態(tài)成員函數(shù)擁有this指針
D.靜態(tài)成員函數(shù)不擁有this指針
20.已知:fun( )函數(shù)是一個(gè)類的常成員函數(shù),它無返回值,下列表示中,是正確的是( )
A.void func( ) const;
B.const void func( );
C.void const func( );
D.void func( const);
二、填空題(本大題共20小題,每小題1分,共20分)請(qǐng)?jiān)诿啃☆}的空格中填上正確答案。錯(cuò)填、不填均無分。
11._________通常使用對(duì)象的引用來初始化創(chuàng)建中的對(duì)象。
12.抽象類中至少要有一個(gè)_________函數(shù)。
13.vector類中用于刪除向量中的所有對(duì)象的函數(shù)是_________。
14.重載的運(yùn)算符保持其原有的操作數(shù)、_________和結(jié)合性不變。
15.執(zhí)行下列代碼 string str("NihaoC++"); cout﹤﹤str. substr(5,3); 程序的輸出結(jié)果是_________。
16.C++中有兩種繼承:單一繼承和_________。
17.C++支持兩種多態(tài)性:_________時(shí)的多態(tài)性和運(yùn)行時(shí)的多態(tài)性。
18.在用class定義一個(gè)類時(shí),數(shù)據(jù)成員和成員函數(shù)的默認(rèn)訪問權(quán)限是_________。
19.C++流庫預(yù)定義了4個(gè)流,它們分別是cin、cout、clog和_________。
110.在C++中,有兩種給出注釋的方法。一種是沿用C語言的注釋符,即/**/。另一種是從它開始,直到它所在行尾的字符都為注釋的注釋符,即_________。
111.使用new為int數(shù)組動(dòng)態(tài)分配10個(gè)存儲(chǔ)空間是_________。
112.假設(shè)int a=1, b=2; 則表達(dá)式(++a/b)*b--的值為_________。
113.C++程序的源文件擴(kuò)展名為_________。
114.語句序列 fstream infile; infile. open("data. dat"); 的功能可用一個(gè)語句實(shí)現(xiàn),這個(gè)語句是_________。
115.已知有20個(gè)元素int類型向量V1,若用Ⅵ1初始化為V2向量,語句是_________。
116.為了避免可能出現(xiàn)的歧義,C++對(duì)if…else語句配對(duì)規(guī)則規(guī)定為:else總是與_________配對(duì)。
117.C++程序的編譯是以_________為單位進(jìn)行的。
118.重載函數(shù)在參數(shù)類型或參數(shù)個(gè)數(shù)上不同,但_________必須相同。
119.舉出C++中兩種代碼復(fù)用的方式:_________、復(fù)用。
120.下面程序運(yùn)行的結(jié)果是_________。#include ﹤iostream. h﹥void main( ) {cout. fill('*');cout. width(6);cout ﹤﹤"hello"﹤﹤ endl;cout. clear( ); }
三、改錯(cuò)題(本大題共5小題,每小題2分,共10分)
21.#include ﹤iostream﹥#include ﹤string﹥using namespace std;class Base{public:Base(const char *na){strcpy( name, na); }private:char name [80];};class Derived: public Base{ public:Derived( const char *nm): Base(nm) { }void show( );};void Derived: :show( ){ cout﹤﹤"name:"﹤﹤name﹤﹤endl;}void main( ){ Derived b1("B");b 1. show( );}
22.#include ﹤iostream﹥using namespace std;void setzero( int &a) {a=0;}int main( ) {int x1=10; x2=20;setzero(x1);etzero(x2);cout ﹤﹤x1 ﹤﹤x2 ﹤﹤endl;return 0;}
23.#include ﹤iostream﹥using namespace std;int main( ) {int a= 10;int *p1=NULL;int *p2=a;cout ﹤﹤p1﹤﹤*p2﹤﹤endl;return 0;}
24.#include ﹤iostream﹥using namespace std;void main( ){int x1(3), x2(8);int * const p =&x1;cout ﹤﹤*p﹤﹤ endl;p=&x2;cout ﹤﹤*p﹤﹤ endl;}
25.#include ﹤iostream﹥using namespace std;class INTEGER{public:INTEGER(int a){ this -﹥a=a; }protected:int a; friend void Print( const INTEGER& obj);};void INTEGER:: Print( const INTEGER & obj){cout ﹤﹤ obj. a;}void main( ){INTEGER obj(4);Print(obj);}
四、完成程序題(本大題共5小題,每小題4分,共20分)
31.完成下面類中成員函數(shù)的定義。#include ﹤iostream﹥#include ﹤string﹥using namespace std;class str{ private:char * st;public:str(char *a){set (a);} _________ //運(yùn)算符“=”重載函數(shù){delete st; set(a.st);return * this;}void show( ){cout ﹤﹤ st ﹤﹤ endl; }~str( ) { delete st; }void set(char *s);{_________ strcpy( st, s);}};void main( );{str s1("hello"),s2("world");s 1. show( ),s 2.show( );s2=s1;s 1. show( ),s 2.show( );}
32.Test_Static類內(nèi)有一靜態(tài)成員變量num,且初始值設(shè)為15。#include ﹤iostream﹥using namespace std;class Test_Static{private: _________public:Test_Static(int); void print( );}; _________Test_Static:: Test_Static(int n){num=n;}void Test_Static:: print( ){cout﹤﹤num﹤﹤endl;}void main( ){Test_Static ts(10); ts.print( );}
33.任意輸入10個(gè)同學(xué)的成績,計(jì)算其平均成績。要求用函數(shù)average( )計(jì)算平均成績。主函數(shù)輸入數(shù)據(jù)并輸出結(jié)果。#include "stdafx.h"#include ﹤iostream﹥using namespace std;void main(void){float average(float a[ ]);float score[10];for( _________ ){cin﹥﹥score[i];}cout ﹤﹤"average: "﹤﹤ average( score)﹤﹤endl;}float average( float a[ ]){float sum =0;for( int i=0; i﹤10; i ++){_________}return (sum/10);}
34.下面程序中Base是抽象類。請(qǐng)?jiān)谙旅娉绦虻臋M線處填上適當(dāng)內(nèi)容,以使程序完整,并使程序的輸出為: Der1 called!Der2 called!#include ﹤ iostream. h﹥class Base{ public:_________;};class Der1: public Base{ public:void display( ) { cout ﹤﹤"Der1 called! "﹤﹤endl; }};class Der2: public Base{ public:void display( ) { cout ﹤﹤"Der2 called! "﹤﹤endl; }};void fun( _________ ){ p-﹥display( ); }void main( ){ Der1 b1;Der2 b2;Base * p=&b1;fun(p);p=&b2;fun(p);}
35.#include ﹤iostream﹥using namespace std;int a[ ]={2,4,6,7,10};int &index( int i){ retum a[i]; }void main( ) {int i;_________ //調(diào)用 index函數(shù),將數(shù)組a中的元素7替換為8for( _________ ) //輸出數(shù)組acout﹤﹤a[i]﹤﹤" ";}
五、程序分析題(本大題共2小題,每小題10分,共20分)
41.#include ﹤iostream﹥using namespace std;class CBase{public:void fun( );};void CBase:: fun( ){cout﹤﹤"調(diào)用基類類的函數(shù)fun( ) "; }class CDerived:public CBase{ public: void fun( );};void CDerived:: fun( ){ cout﹤﹤"調(diào)用派生類的函數(shù)fun( ) ”;}void main( ){CDerived d1;CBase *pd=&d1;CBase &pd=d1;d 1. fun( );pb-﹥fun( );pd.fun( );}
42.#include ﹤iostream﹥#include ﹤strinh﹥#include ﹤iomanip﹥using namespace std;class student{char name[ 8];int deg;char level[7];friend class process; //說明友元類public:student( char na[ ], int d){strcpy(name,na);deg=a;}};class process{public:void trans( student &s){int i=s. deg/10;switch(i){case 9:strcpy(s. level, "優(yōu)"); break;case 8:stecpy(s. level, "良"); break;case 7:strcpy(s. level, "中"); break;case 6:strcpy(s. level, "及格");break; default:strcpy(s. level, "不及格"); break;}}void show( student &s){ cout ﹤﹤setw(10)﹤﹤s.name﹤﹤setw(4)﹤﹤s. deg﹤﹤ setw(8)﹤﹤s.level﹤﹤ endl; }};void main( ){ student st[ ]={ student("Jack", 78), student ("Lucy",92), student("Lily", 62), student("Tom", 99 )};process p;cout﹤﹤"結(jié)果:"﹤﹤"姓名"﹤﹤setw(6)﹤﹤"成績"﹤﹤sew(8)﹤﹤"等級(jí)"﹤﹤endl;for(int i=0; i ﹤4;i++){p. trans(st[i]);p. show(st[i]);}}
六、程序設(shè)計(jì)題(本大題共1小題,共10分)
51.定義一個(gè)圖形類(figure),其中有保護(hù)類型的成員數(shù)據(jù):高度(height)和寬度(width),一個(gè)公有的構(gòu)造函數(shù)。由該圖形類建立兩個(gè)派生類:矩形類和等腰三角形類。 在每個(gè)派生類中都包含一個(gè)函數(shù)area( ),分別用來計(jì)算矩形和等腰三角形的面積。其中,主函數(shù)已給出,請(qǐng)完成其他部分的代碼。int main( ){triangle tri(2, 3);rectangle rec(2, 3);cout ﹤﹤"The area of triangle is: "﹤﹤ tri. area( )﹤﹤endl; cout ﹤﹤"The area of rectangle is: "﹤﹤rec. area( )﹤﹤ endl; return 0;}
延伸閱讀
- 2023年10月自考00257票據(jù)法真題
- 2023年10月自考00249國際私法真題
- 2023年10月自考00246國際經(jīng)濟(jì)法概論真題
- 2023年10月自考00245刑法學(xué)真題
- 2023年10月自考00186國際商務(wù)談判真題
- 2023年10月自考00185商品流通概論真題
自考微信公眾號(hào)
掃碼添加
自考備考資料免費(fèi)領(lǐng)取
去領(lǐng)取