違法信息舉報 客服熱線:400-118-7898
廣告
?
專接本欄目測試廣告

?C++程序設計2009年10月真題試題(04737)

自考 責任編輯:彭雅倩 2019-06-24

摘要:C++程序設計2009年10月真題試題及答案解析(04737),本試卷總共100分。

C++程序設計2009年10月真題試題及答案解析(04737)

C++程序設計2009年10月真題試題及答案解析(04737),本試卷總共100分。

一、單項選擇題

(本大題共20小題,每小題1分,共20分)在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內。錯選、多選或未選均無分。

1.對C++中主函數描述正確的是(  )

A.名稱為main,可為多個
B.名稱不限,可為多個
C.名稱為main,必須有且只能有一個
D.名稱不限,必須有且只能有一個

2.調用聲明為int result(int a, int b)的函數時,正確的方法是(  )

A.result(1, 2)
B.result(1)
C.result(0.1, 0.3)
D.result(1, 2, 3)

3.用于包含C++標準庫iostream的預處理指令是(  )

A.#define
B.#include
C.#define "iostream"
D.#include "iostream"

4.無類型標識符是指(  )

A.void
B.bool
C.short
D.long

5.從本質上看,引用是被引用變量的(  )

A.拷貝
B.別名
C.復制
D.克隆

6.下面關于數組的初始化正確的是(  )

A.char str[ ]={"a","b","c"};
B.char str[2]={"a","b","c"};
C.char str[1][2]={{"a","b"},{"e","d"}};
D.char str[ ][ ]={"a","b","c"};

7.C++類中定義的成員默認訪問屬性為(  )

A.public
B.private
C.protected
D.friend

8.決定C++語言中函數的返回值類型的是(  )

A.return語句中的表達式類型
B.調用該函數時系統(tǒng)隨機產生的類型
C.調用該函數時的主調用函數類型
D.在定義該函數時所指定的數據類型

9.函數int & min(int &, int &)返回參數中較小者,設有兩整型變量int a=10; int b=15;在執(zhí)行語句min(a, b)--; 之后,a,b值分別為(  )

A.9,14
B.9,15
C.10,14
D.10,15

10.聲明函數為內聯函數時所使用的關鍵字為(  )

A.const
B.inline
C.short
D.signed

11.函數int sum(int a=1, int b=1, int c=3)可與下列哪個函數同時聲明(  )

A.double sum(int);
B.char sum(int, int);
C.int sum(double);
D.int sum(int, int, int);

12.函數模板template void Func(T,T)可具有下列哪種實例化形式(  )

A.void Func(float, int)
B.void Func(char, char)
C.void Func(int, double)
D.void Func(bool, float)

13.下列訪問成員的方式哪個是正確的(  )

A.對象名.對象成員名
B.對象指針名.對象成員名
C.對象名->對象成員名
D.類名->對象成員名

14.對類A,復制構造函數的原型是(  )

A.A::A(const A&);
B.A::A(const A *);
C.A::A(const A);
D.A::A( );

15.對class point,如使用point * ptr=new point[2]; 創(chuàng)建對象數組,則刪除此數組使用的語句是(  )

A.delete ptr[2];
B.delete[ ] ptr;
C.delete ptr[ ];
D.delete[2] ptr;

16.下列哪個編譯指令不屬于條件編譯指令(  )

A.#if
B.#else
C.#endif
D.#error

17.類A中存在靜態(tài)數據成員x,設a和b是類A的兩個對象,在執(zhí)行a.x=10之后,b.x 的值為(  )

A.未初始化
B.等于a.x 的值為(  )
C.等于0
D.隨機

18.使用string.h庫操縱字符串時,將兩個字符串連接成一個字符串的函數是(  )

A.strlen( )
B.strcap( )
C.strcat( )
D.strcmp( )

19.基類中的public成員,通過public派生,其在派生類中的訪問權限為(  )

A.不可訪問
B.private
C.protected
D.public

20.不同對象調用同名函數,但導致完全不同行為的現象稱為(  )

A.抽象
B.封裝
C.繼承
D.多態(tài)性

二、填空題

(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上正確答案。錯填、不填均無分。

11.在C++語言的面向對象設計框架中,_______是程序的基本組成單元。

12.執(zhí)行代碼double pi=3.1415192; cout<<setprecision(3)<<pi; 程序的輸出結果是_______。

13.C++語言提供的的基本控制結構可以分為3種類型:順序結構、_______和循環(huán)結構。

14.要使用STL庫提供的對數組進行降冪排序算法,在源程序中需要包含的頭文件是______。

15.在C++標準庫中,用_______類來表示復數。

16.將對象作為函數參數,是將實參對象的_______傳遞給形參對象,這種傳遞是單向的。

17.C++函數的返回類型可以是除數組與_______以外的任何類型。

18.能提供封裝的C++關鍵字是_______。

19.在C++的類聲明中,用public關鍵字聲明的類成員的訪問權限是_______。

110.開發(fā)一個C++語言程序的步驟通常包括編輯、_______、連接、運行和調試。

111.C++類中的_______函數在對象的生存期結束時被自動調用。

112.友元函數可以存取類的_______、公有成員和保護成員。

113.若類的成員函數用關鍵字static進行修飾,這樣的成員函數稱為_______。

114.在C++中,創(chuàng)建派生類對象時,總是先從_______的初始化開始的。

115.類的繼承是指派生類繼承基類的數據成員和_______。

116.在C++中,利用向量類模板定義一個具有20個double的向量,其元素均被置為0.5,實現此操作的語句是_______。

117.vector類中用于返回向量中的最后一個對象的方法是_________。

118.虛函數類似于重載函數,但與重載函數的實現策略不同,對虛函數聲明時應使用_______關鍵字。

119.在C++中,雖然友元提供了類之間數據進行訪問的一種方式,但它破壞了面向對象程序設計的_______特性。

120.執(zhí)行下列代碼cout << showpoint << 123.0;程序的輸出結果是_______。

三、改錯題

(本大題共5小題,每小題4分,共20分)下面的類定義中有一處錯誤,請用下橫線標出錯誤所在行并給出修改意見。

21.#include <iostream>using namespace std;int main ( ){int num; max=10; num=1while (num < max) num ++ ;cout <<″Num=″<< num;return 0;}

22.#include <iostream>using namespace std;class A {void show ( ) {cout<<″Hello!″;}};int main ( ) {A a; a.show ( );return 0;}

23.#include <iostream>using namespace std;int main ( ) {const int num = 20;int scores[num];for (int i=1;i<=num;i ++){scores[i]=i;}return 0;}

24.#include <iostream>using namespace std;class CMax {private:int xx; int yy;public:CMax(int x, int y){ xx = x; yy = y; }void setValue(int x,int y){ xx = x; yy = y;}int max( ){return xx >yy?xx:yy;}};void main( ){CMax m( );m.setValue(20,30);cout <<″Max=″<<m.max( )<<endl;}

25.#include <iosiream>using namespace std;class A{public:char name[255];private:char * getName( ){  return name; }};class B:public A{public:B(char * n){strcpy ( name, n);}};void main( ){B b(″Hello!″);cout <<″Name:″<<b.getName( );}

四、完成程序題

(本大題共5小題,每小題4分,共20分)

31.將下面程序補充完整,使程序輸出結果為:BeginWelcomeShowEnd程序如下:#include <iostream>using namespace std;class A{public:__________{cout <<″Begin″<<endl;}void show( ){cout<<″Show″<<endl;}___________{cout<<″End″<<endl;}};A object;int main( ){cout <<″Welcome″<<endl;object.show( );return 0;}

32.請將下面程序補充完整,使程序可以正常打印9×9乘法口訣。#include <iostream>using namespace std;class A {private:int a; int b;public:__________{ a = x; b = y; }void set(int x,int y){ a = x; b = y; }void display( ){cout<<a<<′*′<<b<<′=′<<a * b;}};int main( ){A a(1,1);for(int i=1;i<=9;i++){for(int j=1;__________;j++){a.set(j,i);a.display( );cout<<″″;}cout<<endl;}return 0;}

33.將下面程序補充完整,使程序可以輸入學生信息并計算平均成績。#include <iostream>#include <string.h>using namespace std;class Student{private:char name[255];int score[10];public:Student(char n[ ],int s[ ]){___________;for(int i=0;i<10;i++){score[i]=s[i];}}void Show( ){int sum=0;for(int i=0;i<10;i++){_______________;}cout<<″名字:″< < name<<″,平均成績:″<<sum/10;}};void main( ){char name[255];int score[10];cout<<″姓名:″;cin>>name;for(int i=0;i<10;i++){cout<<″成績″<<i+1<<″:″;cin>>score[i];}Student s(name,score);s.Show( );}

34.將下面程序補充完整,使程序可以正常運行,并釋放內存。#include <iostream.h>__________class A {private:T * data;int length;public:A (int len){length=len;data=new T[len];}~A( ){_________}T& operator[ ](int i){return data[i];}};int main( ){A<int> obj(2);obj[0]=1;obj[1]=2;cout<<obj[0]<<endl;cout<<obj[1]<<endl;return 0;}

35.將下面程序補充完整,使程序運行結果為:C1ass AClass B程序如下:#include <iostream.h>#include <string.h>class A{public:virtual void GetA( ) = 0;};class B: public A{private:char str[32];public:void GetA( ){cout<<″Class A″<<endl;}const char * GetB( ) { __________}B(char * s){strcpy(str,s);}};void main( ){A * a;B b(″Class B″);a=__________;a-> GetA( );cout<<b.GetB( )<<endl;return;}

五、程序分析題

(本大題共2小題,每小題5分,共10分)

41.#include <iostream>using namespace std;int main( ){int i,j;for(i=1;i<=4;i+=1)for(j=2;j<=4;j+=j){if(i+j<5)cout<<″+″;elsecout<<″*″;}return 0;}

42.#include <iostream>using namespace std;class A {int a;public:A(int aa=0){a=aa;}~A( ){cout <<″Destructor A!″<<a<<endl;}};class B: public A{int b;public:B(int aa = 0,int bb = 0):A(aa){b = bb;}~B( ){cout <<″Destructor B!″<< b << endl;}};void main( ){B x(5), y(6,7);}

六、程序設計題

(本大題共1小題,共10分)

51.下面Shape類是一個表示形狀的抽象類,Area( )為求圖形面積的函數。請從Shape類派生梯形類(Trapezoid)、圓形類(Circle),三角形類(Triangle),并給出具體的求面積函數。其中,所有派生類計算面積需要用到的參數由構造函數給出,梯形面積計算需要上底、下底和高,三角形面積需要底和高,圓形面積需要半徑。形狀的抽象類聲明如下:class Shape {public:virtual double Area( ) = 0;};

溫馨提示:因考試政策、內容不斷變化與調整,本網站提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內容為準!

自考備考資料免費領取

去領取