?自考C++程序設計2016年4月試題
摘要:自考C++程序設計2016年4月試題及答案解析,該試卷為自考C++程序設計歷年真題試卷,包含答案及詳細解析。
自考C++程序設計2016年4月試題及答案解析
自考C++程序設計2016年4月試題及答案解析,該試卷為自考C++程序設計歷年真題試卷,包含答案及詳細解析。
一、單項選擇題(本大題共20小題,每小題1分,共20分。)在每小題列出的備選項中只有一項是最符合題目要求的,請將其代碼填寫在題后的括號內。錯選、多選或未選均不得分。
1.要求指針p既不可修改其本身的內容,也不可修改其所指向地址的內容,定義正確的( )
A.const char *p="ABCD";
B.char *const p="ABCD";
C.char const *p="ABCD";
D.const char * const p="ABCD";
2.在C++中,類與類之間的繼承關系具有( )
A.自反性
B.對稱性
C.傳遞性
D.反對稱性
3.下列關于對靜態數據成員的描述中,正確的是( )
A.靜態數據成員不能用 public控制符修飾
B.靜態數據成員可以直接用類名或者對象名來調用
C.靜態數據成員不可以被類的對象調用
D.靜態數據成員不能用 private控制符修飾
4.適宜采用inline定義函數情況是( )
A.函數體含有循環語句
B.函數體含有遞歸語句
C.函數代碼多、不常調用
D.函數代碼少、頻繁調用
5.通常拷貝構造函數的參數是( )
A.某個對象的成員名
B.某個對象的指針名
C.某個對象的引用名
D.某個對象名
6.下列不是類的成員函數的( )
A.友元函數
B.構造函數
C.析構函數
D.拷貝構造函數
7.類Cat是類Animal的公有派生類,類Animal和類Cat中都定義了虛函數func( ),p是一個指向類Animal對象的指針,則p-﹥Animal:: func( )將( )
A.調用類Animal中的函數func( )
B.調用類Cat中的函數func( )
C.根據p所指的對象類型而確定調用類Animal中或類Cat中的函數func( )
D.既調用類 Animal中函數,也調用類Cat中的函數
8.如果表達式++a中的“+”是作為成員函數重載的運算符,若采用運算符函數調用格式,則可表示為( )
A.operator ++(1)
B.operator ++(a)
C.operator ++(a, 1)
D.operator ++( )
9.實現兩個相同類型數加法的函數模板的聲明是( )
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.以下基類中的成員函數表示純虛函數的是( )
A.virtual void vf(int)
B.void vf(int)=0
C.virtual void vf( )=0
D.virtual void yf( int) { }
11.假定一個類的構造函數為A(int aa, int bb) { a=aa++; b=a*++bb;},則執行A x(4,5);語句后,x.a和x.b的值分別為( )
A.4和5
B.4和20
C.4和24
D.20和5
12.下列運算符中,在C++語言中不能重載的是( )
A.*
B.﹥=
C.::
D./
13.在編譯指令中,宏定義使用哪個指令( )
A.#if
B.#include
C.#define
D.#error
14.以下能正確定義數組并正確賦初值的語句是( )
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.關于函數模板,描述錯誤的是( )
A.函數模板必須由程序員實例化為可執行的函數模板;
B.函數模板的實例化由編譯器實現;
C.一個類定義中,只要有一個函數模板,則這個類是類模板;
D.類模板的成員函數都是函數模板,類模板實例化后,成員函數也隨之實例化;
16.按照標識符的要求,不能組成標識符的是( )
A.連接符
B.下劃線
C.大小寫字母
D.數字字母
17.已知類A是類B的友元,類B是類C的友元,則( )
A.類A一定是類C的友元
B.類C一定是類A的友元
C.類C的成員函數可以訪問類B的對象的任何成員
D.類A的成員函數可以訪問類B的對象的任何成員
18.已知:p是一個指向類A數據成員m的指針,A1是類A的一個對象。如果要給m賦值為5,正確的是( )
A.A
1.p=5;
B.A1-﹥p=5;
C.A
1.*p=5;
D.*A1.p=5;
19.關于this指針的說法錯誤的是( )
A.this指針必須顯式聲明
B.當創建一個對象后,this指針就指向該對象
C.動態成員函數擁有this指針
D.靜態成員函數不擁有this指針
20.已知:fun( )函數是一個類的常成員函數,它無返回值,下列表示中,是正確的是( )
A.void func( ) const;
B.const void func( );
C.void const func( );
D.void func( const);
二、填空題(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上正確答案。錯填、不填均無分。
11._________通常使用對象的引用來初始化創建中的對象。
12.抽象類中至少要有一個_________函數。
13.vector類中用于刪除向量中的所有對象的函數是_________。
14.重載的運算符保持其原有的操作數、_________和結合性不變。
15.執行下列代碼 string str("NihaoC++"); cout﹤﹤str. substr(5,3); 程序的輸出結果是_________。
16.C++中有兩種繼承:單一繼承和_________。
17.C++支持兩種多態性:_________時的多態性和運行時的多態性。
18.在用class定義一個類時,數據成員和成員函數的默認訪問權限是_________。
19.C++流庫預定義了4個流,它們分別是cin、cout、clog和_________。
110.在C++中,有兩種給出注釋的方法。一種是沿用C語言的注釋符,即/**/。另一種是從它開始,直到它所在行尾的字符都為注釋的注釋符,即_________。
111.使用new為int數組動態分配10個存儲空間是_________。
112.假設int a=1, b=2; 則表達式(++a/b)*b--的值為_________。
113.C++程序的源文件擴展名為_________。
114.語句序列 fstream infile; infile. open("data. dat"); 的功能可用一個語句實現,這個語句是_________。
115.已知有20個元素int類型向量V1,若用Ⅵ1初始化為V2向量,語句是_________。
116.為了避免可能出現的歧義,C++對if…else語句配對規則規定為:else總是與_________配對。
117.C++程序的編譯是以_________為單位進行的。
118.重載函數在參數類型或參數個數上不同,但_________必須相同。
119.舉出C++中兩種代碼復用的方式:_________、復用。
120.下面程序運行的結果是_________。#include ﹤iostream. h﹥void main( ) {cout. fill('*');cout. width(6);cout ﹤﹤"hello"﹤﹤ endl;cout. clear( ); }
三、改錯題(本大題共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.完成下面類中成員函數的定義。#include ﹤iostream﹥#include ﹤string﹥using namespace std;class str{ private:char * st;public:str(char *a){set (a);} _________ //運算符“=”重載函數{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類內有一靜態成員變量num,且初始值設為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個同學的成績,計算其平均成績。要求用函數average( )計算平均成績。主函數輸入數據并輸出結果。#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是抽象類。請在下面程序的橫線處填上適當內容,以使程序完整,并使程序的輸出為: 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;_________ //調用 index函數,將數組a中的元素7替換為8for( _________ ) //輸出數組acout﹤﹤a[i]﹤﹤" ";}
五、程序分析題(本大題共2小題,每小題10分,共20分)
41.#include ﹤iostream﹥using namespace std;class CBase{public:void fun( );};void CBase:: fun( ){cout﹤﹤"調用基類類的函數fun( ) "; }class CDerived:public CBase{ public: void fun( );};void CDerived:: fun( ){ cout﹤﹤"調用派生類的函數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, "優"); 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﹤﹤"結果:"﹤﹤"姓名"﹤﹤setw(6)﹤﹤"成績"﹤﹤sew(8)﹤﹤"等級"﹤﹤endl;for(int i=0; i ﹤4;i++){p. trans(st[i]);p. show(st[i]);}}
六、程序設計題(本大題共1小題,共10分)
51.定義一個圖形類(figure),其中有保護類型的成員數據:高度(height)和寬度(width),一個公有的構造函數。由該圖形類建立兩個派生類:矩形類和等腰三角形類。 在每個派生類中都包含一個函數area( ),分別用來計算矩形和等腰三角形的面積。其中,主函數已給出,請完成其他部分的代碼。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;}
延伸閱讀
- 2025年4月自考政治經濟學(中級)全真模擬試題
- 2023年10月自考00257票據法真題
- 2023年10月自考00249國際私法真題
- 2023年10月自考00246國際經濟法概論真題
- 2023年10月自考00245刑法學真題
- 2023年10月自考00186國際商務談判真題
自考微信公眾號
掃碼添加
自考備考資料免費領取
去領取