?C++程序設計2009年10月真題試題(04737)
摘要: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;};
延伸閱讀
- 2023年10月自考00257票據法真題
- 2023年10月自考00249國際私法真題
- 2023年10月自考00246國際經濟法概論真題
- 2023年10月自考00245刑法學真題
- 2023年10月自考00186國際商務談判真題
- 2023年10月自考00185商品流通概論真題
自考微信公眾號
掃碼添加
自考備考資料免費領取
去領取