?C++程序設(shè)計(jì)2009年10月真題試題(04737)
摘要:C++程序設(shè)計(jì)2009年10月真題試題及答案解析(04737),本試卷總共100分。
C++程序設(shè)計(jì)2009年10月真題試題及答案解析(04737)
C++程序設(shè)計(jì)2009年10月真題試題及答案解析(04737),本試卷總共100分。
一、單項(xiàng)選擇題
(本大題共20小題,每小題1分,共20分)在每小題列出的四個(gè)備選項(xiàng)中只有一個(gè)是符合題目要求的,請(qǐng)將其代碼填寫(xiě)在題后的括號(hào)內(nèi)。錯(cuò)選、多選或未選均無(wú)分。
1.對(duì)C++中主函數(shù)描述正確的是( )
A.名稱(chēng)為main,可為多個(gè)
B.名稱(chēng)不限,可為多個(gè)
C.名稱(chēng)為main,必須有且只能有一個(gè)
D.名稱(chēng)不限,必須有且只能有一個(gè)
2.調(diào)用聲明為int result(int a, int b)的函數(shù)時(shí),正確的方法是( )
A.result(1, 2)
B.result(1)
C.result(0.1, 0.3)
D.result(1, 2, 3)
3.用于包含C++標(biāo)準(zhǔn)庫(kù)iostream的預(yù)處理指令是( )
A.#define
B.#include
C.#define "iostream"
D.#include "iostream"
4.無(wú)類(lèi)型標(biāo)識(shí)符是指( )
A.void
B.bool
C.short
D.long
5.從本質(zhì)上看,引用是被引用變量的( )
A.拷貝
B.別名
C.復(fù)制
D.克隆
6.下面關(guān)于數(shù)組的初始化正確的是( )
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++類(lèi)中定義的成員默認(rèn)訪(fǎng)問(wèn)屬性為( )
A.public
B.private
C.protected
D.friend
8.決定C++語(yǔ)言中函數(shù)的返回值類(lèi)型的是( )
A.return語(yǔ)句中的表達(dá)式類(lèi)型
B.調(diào)用該函數(shù)時(shí)系統(tǒng)隨機(jī)產(chǎn)生的類(lèi)型
C.調(diào)用該函數(shù)時(shí)的主調(diào)用函數(shù)類(lèi)型
D.在定義該函數(shù)時(shí)所指定的數(shù)據(jù)類(lèi)型
9.函數(shù)int & min(int &, int &)返回參數(shù)中較小者,設(shè)有兩整型變量int a=10; int b=15;在執(zhí)行語(yǔ)句min(a, b)--; 之后,a,b值分別為( )
A.9,14
B.9,15
C.10,14
D.10,15
10.聲明函數(shù)為內(nèi)聯(lián)函數(shù)時(shí)所使用的關(guān)鍵字為( )
A.const
B.inline
C.short
D.signed
11.函數(shù)int sum(int a=1, int b=1, int c=3)可與下列哪個(gè)函數(shù)同時(shí)聲明( )
A.double sum(int);
B.char sum(int, int);
C.int sum(double);
D.int sum(int, int, int);
12.函數(shù)模板template void Func(T,T)可具有下列哪種實(shí)例化形式( )
A.void Func(float, int)
B.void Func(char, char)
C.void Func(int, double)
D.void Func(bool, float)
13.下列訪(fǎng)問(wèn)成員的方式哪個(gè)是正確的( )
A.對(duì)象名.對(duì)象成員名
B.對(duì)象指針名.對(duì)象成員名
C.對(duì)象名->對(duì)象成員名
D.類(lèi)名->對(duì)象成員名
14.對(duì)類(lèi)A,復(fù)制構(gòu)造函數(shù)的原型是( )
A.A::A(const A&);
B.A::A(const A *);
C.A::A(const A);
D.A::A( );
15.對(duì)class point,如使用point * ptr=new point[2]; 創(chuàng)建對(duì)象數(shù)組,則刪除此數(shù)組使用的語(yǔ)句是( )
A.delete ptr[2];
B.delete[ ] ptr;
C.delete ptr[ ];
D.delete[2] ptr;
16.下列哪個(gè)編譯指令不屬于條件編譯指令( )
A.#if
B.#else
C.#endif
D.#error
17.類(lèi)A中存在靜態(tài)數(shù)據(jù)成員x,設(shè)a和b是類(lèi)A的兩個(gè)對(duì)象,在執(zhí)行a.x=10之后,b.x 的值為( )
A.未初始化
B.等于a.x
的值為( )
C.等于0
D.隨機(jī)
18.使用string.h庫(kù)操縱字符串時(shí),將兩個(gè)字符串連接成一個(gè)字符串的函數(shù)是( )
A.strlen( )
B.strcap( )
C.strcat( )
D.strcmp( )
19.基類(lèi)中的public成員,通過(guò)public派生,其在派生類(lèi)中的訪(fǎng)問(wèn)權(quán)限為( )
A.不可訪(fǎng)問(wèn)
B.private
C.protected
D.public
20.不同對(duì)象調(diào)用同名函數(shù),但導(dǎo)致完全不同行為的現(xiàn)象稱(chēng)為( )
A.抽象
B.封裝
C.繼承
D.多態(tài)性
二、填空題
(本大題共20小題,每小題1分,共20分)請(qǐng)?jiān)诿啃☆}的空格中填上正確答案。錯(cuò)填、不填均無(wú)分。
11.在C++語(yǔ)言的面向?qū)ο笤O(shè)計(jì)框架中,_______是程序的基本組成單元。
12.執(zhí)行代碼double pi=3.1415192; cout<<setprecision(3)<<pi; 程序的輸出結(jié)果是_______。
13.C++語(yǔ)言提供的的基本控制結(jié)構(gòu)可以分為3種類(lèi)型:順序結(jié)構(gòu)、_______和循環(huán)結(jié)構(gòu)。
14.要使用STL庫(kù)提供的對(duì)數(shù)組進(jìn)行降冪排序算法,在源程序中需要包含的頭文件是______。
15.在C++標(biāo)準(zhǔn)庫(kù)中,用_______類(lèi)來(lái)表示復(fù)數(shù)。
16.將對(duì)象作為函數(shù)參數(shù),是將實(shí)參對(duì)象的_______傳遞給形參對(duì)象,這種傳遞是單向的。
17.C++函數(shù)的返回類(lèi)型可以是除數(shù)組與_______以外的任何類(lèi)型。
18.能提供封裝的C++關(guān)鍵字是_______。
19.在C++的類(lèi)聲明中,用public關(guān)鍵字聲明的類(lèi)成員的訪(fǎng)問(wèn)權(quán)限是_______。
110.開(kāi)發(fā)一個(gè)C++語(yǔ)言程序的步驟通常包括編輯、_______、連接、運(yùn)行和調(diào)試。
111.C++類(lèi)中的_______函數(shù)在對(duì)象的生存期結(jié)束時(shí)被自動(dòng)調(diào)用。
112.友元函數(shù)可以存取類(lèi)的_______、公有成員和保護(hù)成員。
113.若類(lèi)的成員函數(shù)用關(guān)鍵字static進(jìn)行修飾,這樣的成員函數(shù)稱(chēng)為_(kāi)______。
114.在C++中,創(chuàng)建派生類(lèi)對(duì)象時(shí),總是先從_______的初始化開(kāi)始的。
115.類(lèi)的繼承是指派生類(lèi)繼承基類(lèi)的數(shù)據(jù)成員和_______。
116.在C++中,利用向量類(lèi)模板定義一個(gè)具有20個(gè)double的向量,其元素均被置為0.5,實(shí)現(xiàn)此操作的語(yǔ)句是_______。
117.vector類(lèi)中用于返回向量中的最后一個(gè)對(duì)象的方法是_________。
118.虛函數(shù)類(lèi)似于重載函數(shù),但與重載函數(shù)的實(shí)現(xiàn)策略不同,對(duì)虛函數(shù)聲明時(shí)應(yīng)使用_______關(guān)鍵字。
119.在C++中,雖然友元提供了類(lèi)之間數(shù)據(jù)進(jìn)行訪(fǎng)問(wèn)的一種方式,但它破壞了面向?qū)ο蟪绦蛟O(shè)計(jì)的_______特性。
120.執(zhí)行下列代碼cout << showpoint << 123.0;程序的輸出結(jié)果是_______。
三、改錯(cuò)題
(本大題共5小題,每小題4分,共20分)下面的類(lèi)定義中有一處錯(cuò)誤,請(qǐng)用下橫線(xiàn)標(biāo)出錯(cuò)誤所在行并給出修改意見(jiàn)。
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.將下面程序補(bǔ)充完整,使程序輸出結(jié)果為: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.請(qǐng)將下面程序補(bǔ)充完整,使程序可以正常打印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.將下面程序補(bǔ)充完整,使程序可以輸入學(xué)生信息并計(jì)算平均成績(jī)。#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<<″,平均成績(jī):″<<sum/10;}};void main( ){char name[255];int score[10];cout<<″姓名:″;cin>>name;for(int i=0;i<10;i++){cout<<″成績(jī)″<<i+1<<″:″;cin>>score[i];}Student s(name,score);s.Show( );}
34.將下面程序補(bǔ)充完整,使程序可以正常運(yùn)行,并釋放內(nèi)存。#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.將下面程序補(bǔ)充完整,使程序運(yùn)行結(jié)果為: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);}
六、程序設(shè)計(jì)題
(本大題共1小題,共10分)
51.下面Shape類(lèi)是一個(gè)表示形狀的抽象類(lèi),Area( )為求圖形面積的函數(shù)。請(qǐng)從Shape類(lèi)派生梯形類(lèi)(Trapezoid)、圓形類(lèi)(Circle),三角形類(lèi)(Triangle),并給出具體的求面積函數(shù)。其中,所有派生類(lèi)計(jì)算面積需要用到的參數(shù)由構(gòu)造函數(shù)給出,梯形面積計(jì)算需要上底、下底和高,三角形面積需要底和高,圓形面積需要半徑。形狀的抽象類(lèi)聲明如下:class Shape {public:virtual double Area( ) = 0;};
延伸閱讀
- 2023年10月自考00257票據(jù)法真題
- 2023年10月自考00249國(guó)際私法真題
- 2023年10月自考00246國(guó)際經(jīng)濟(jì)法概論真題
- 2023年10月自考00245刑法學(xué)真題
- 2023年10月自考00186國(guó)際商務(wù)談判真題
- 2023年10月自考00185商品流通概論真題
自考微信公眾號(hào)
掃碼添加
自考備考資料免費(fèi)領(lǐng)取
去領(lǐng)取