全國2012年1月04737C++程序設(shè)計(jì)自考試卷
2025-07-08 來源:中國教育在線
全國2012年1月高等教育自學(xué)考試
C++程序設(shè)計(jì)試題
課程代碼:04737
一、單項(xiàng)選擇題(本大題共20小題,每小題1分,共20分)
在每小題列出的四個(gè)備選項(xiàng)中只有一個(gè)是符合題目要求的,請(qǐng)將其代碼填寫在題后的括號(hào)內(nèi)。錯(cuò)選、多選或未選均無分。
1.如聲明對(duì)象數(shù)組,則下列描述正確的是( )
A.對(duì)每個(gè)元素均調(diào)用一次構(gòu)造函數(shù)
B.部分元素調(diào)用構(gòu)造函數(shù),其它元素不需調(diào)用
C.均不需要調(diào)用構(gòu)造函數(shù)
D.只是首元素調(diào)用構(gòu)造函數(shù)
2.不同對(duì)象調(diào)用同一成員函數(shù)時(shí),this指針指向( )
A.不同對(duì)象 B.相同對(duì)象
C.無對(duì)象 D.不確定
3.設(shè)存在函數(shù)intmax(int,int)返回兩參數(shù)中較大值,若求22,59,70三者中最大值,下列表達(dá)式正確的是( )
A.int m=max(22,max(59,70));
B.int m=max(max(22,59),max(59,70));
C.int m=max(max(22,70),59);
D.以上皆正確
4.一個(gè)類可擁有多少個(gè)構(gòu)造函數(shù)( )
A.0個(gè) B.1個(gè)
C.1或多個(gè) D.以上皆對(duì)
5.在編譯指令中,嵌入指令是指( )
A.#include B.#define
C.#if D.#else
6.設(shè)存在數(shù)組a,其長度為Len,下列哪項(xiàng)操作是將a中元素復(fù)制到數(shù)組b中( )
A.reverse(a+a,Len,b); B.sort(a,a+Len,b);
C.find(a,a+Len,b); D.copy(a,a+Len,b);
7.下列哪個(gè)要素不是面向?qū)ο蟮年P(guān)鍵要素( )
A.模塊化 B.抽象性
C.封裝性 D.繼承性
8.下列對(duì)于類的描述錯(cuò)誤的是( )
A.類要先聲明后使用
B.類是具有僅有標(biāo)識(shí)的實(shí)體
C.兩個(gè)類可以使用同一個(gè)名稱
D.組成類的不僅有數(shù)據(jù),還可以有對(duì)數(shù)據(jù)進(jìn)行操作的函數(shù)
9.使用引用調(diào)用方式將實(shí)參傳給形參,下列說法正確的是( )
A.形參是實(shí)參的備份 B.實(shí)參是形參的備份
C.形參和實(shí)參共享同一對(duì)象 D.形參和實(shí)參無聯(lián)系
10.關(guān)于對(duì)象的性質(zhì),下列描述錯(cuò)誤的是( )
A.同一類對(duì)象之間可相互賦值
B.不能使用對(duì)象數(shù)組
C.對(duì)象可以用作函數(shù)參數(shù)
D.一個(gè)對(duì)象可以用作另一個(gè)類的成員
11.類的私有成員可在哪里被賦值( )
A.類體中 B.該類的成員函數(shù)中
C.A和B D.以上都不是
1 2.設(shè)存在數(shù)組a,其長度為Len,則下列哪個(gè)泛型算法用于反轉(zhuǎn)a中各元素( )
A.reverse(a,a+Len); B.sort(a,a+Len);
C.find(a,a+Len,value); D.copy(a,a+Len,b);
13.用于標(biāo)識(shí)八進(jìn)制常量的前綴或后綴是( )
A.無 B.后綴L或1
C.前綴零 D.前綴Ox
14.派生類中繼承的基類成員初始化如何進(jìn)行( )
A.由派生類構(gòu)造函數(shù)調(diào)用基類的構(gòu)造函數(shù)進(jìn)行
B.由派生類構(gòu)造函數(shù)進(jìn)行
C.由基類構(gòu)造函數(shù)進(jìn)行,無需派生類構(gòu)造函數(shù)調(diào)用
D.以上皆不正確
1 5.對(duì)于多重繼承,下列描述正確的是( )
A.所有基類使用相同的派生方式 B.每個(gè)基類可使用不同派生方式
C.只能是public派生 D.只能是protected派生
16.下列關(guān)于類的權(quán)限描述錯(cuò)誤的是( )
A.類本身的成員函數(shù)可以訪問自身的任何成員
B.類的對(duì)象可以訪問該類的所有成員
C.普通函數(shù)不能直接訪問類的公有成員,必須通過成員函數(shù)對(duì)其訪問
D.一個(gè)類可以將另一個(gè)類的對(duì)象作為成員
17.運(yùn)算符delete與哪個(gè)函數(shù)一起運(yùn)行( )
A.構(gòu)造函數(shù) B.析構(gòu)函數(shù)
C.主函數(shù) D.不與任何函數(shù)一起工作
18.一個(gè)類可以獲得另一個(gè)類的特性的機(jī)制稱為( )
A.抽象 B.封裝
C.繼承 D.多態(tài)性
19.使用下列哪個(gè)格式控制符可設(shè)置轉(zhuǎn)換十六進(jìn)制為十進(jìn)制( )
A.dec B.oct
C.hex D.endl
20.對(duì)引用調(diào)用描述正確的是( )
A.分配新存儲(chǔ)空間
B.修改已存儲(chǔ)空間的名稱為引用名
C.引用名與已存在存儲(chǔ)空間無任何關(guān)聯(lián)
D.將引用名標(biāo)識(shí)符與一塊已存在儲(chǔ)區(qū)域相關(guān)聯(lián),沒有分配新存儲(chǔ)空間
二、填空題(本大題共20小題,每小題1分,共20分)
請(qǐng)?jiān)诿啃☆}的空格中填上正確答案,錯(cuò)填、不填均無分。
21.公共派生中,基類的公有成員在派生類中是______。
22.若要使用標(biāo)準(zhǔn)輸入流機(jī)制從鍵盤輸入一個(gè)整數(shù)賦給整型變量a,相應(yīng)的C++語句是______。
23.UML中對(duì)象行為之間的動(dòng)態(tài)關(guān)系是通過對(duì)象行為之間的依賴關(guān)系表現(xiàn)的,稱之為______。
24.C++函數(shù)中按引用調(diào)用傳遞參數(shù)時(shí)使用______作為參數(shù)。
25.在C++中除具有______語句和switch語句的函數(shù)外,其它函數(shù)都可以說明為內(nèi)聯(lián)函數(shù)。
26.C++中規(guī)定模板以______關(guān)鍵字和一個(gè)形參表示開頭。
27.構(gòu)造函數(shù)不能被繼承,一個(gè)派生類只能調(diào)用它的______基類的構(gòu)造函數(shù)。
28.vector類中用于獲取存放的元素個(gè)數(shù)的方法是______。
29.C++中istream類的直接基類是______。
30.要關(guān)閉一個(gè)文件輸出流對(duì)象myFile,所用的C++語句是______。
31.執(zhí)行下列代碼
double pi=3.141592
cout<
32.在私有派生中,基類的權(quán)限為private的成員,在派生類中______。
33.C++總共有3種文件流,分別是輸入文件流、輸出文件流和______。
34.C++使用流進(jìn)行輸入輸出,其中能捕獲鍵盤輸入的對(duì)象是______。
35.在vector類中刪除向量中最后一個(gè)對(duì)象的方法是______。
36.函數(shù)重載可使一個(gè)函數(shù)名具有多種功能,稱這種特性為______。
37.C++語言對(duì)C語言做了很多改進(jìn),C++語言相對(duì)于C語言的最根本的變化是引進(jìn)了______概念。
38.______指令定義一個(gè)標(biāo)識(shí)符及串,在源程序中每次遇到該標(biāo)識(shí)符時(shí),編譯器均用定義的串代替之。
39.在C++標(biāo)準(zhǔn)輸出方式中,要設(shè)置輸出數(shù)據(jù)字段寬度width所使用的操控符是______。
40.設(shè)有定義int x;float y;,則10+x+y值的數(shù)據(jù)類型是______。
三、改錯(cuò)題(本大題共5小題,每小題2分,共10分)
下面的類定義中有一處錯(cuò)誤,請(qǐng)用下橫線標(biāo)出錯(cuò)誤所在行并給出修改意見。
41.#include
main(){
int x=9,y=8,z=7;
const int * p=z;
cout<< * p<
}
42.#include
main(){
int x=8,y=6;
const int*const p=&x;
p=&y;
cout<<* p<
}
43.#include
main(){
folat p;
p=new folat[5];
for(int i=0;i<5;i++)
{cin>> * (p+i);cout<< * (p+i)<
delete p;
}
44.template
T f(T x){
T y;
y=x+T;
return y;
}
45.#include
class point{
int x;
public:void init(int a){x=a;}
int getx(){return x;}
void setx(int a){x=a;}
};
main(){
point a;
a.init(20,30);
cout<
}
四、完成程序題(本大題共5小題,每小題4分,共20分)
46.在下面程序的下劃線處填上正確的語句,使其得到下面的輸出結(jié)果。
x=2,y=3
#include
class Sample
{
int x,y;
public:
Sample( ){
x=y=0;
}
Sample(int a,int b){
x=a;
(__________)
}
void disp( )
{
cout<<"x="<
}
}(____-_______)
void main( )
{
Sample s(2,3),*p=&s;
p - >disp();
}
47.在下劃線處填上適當(dāng)?shù)恼Z句,使程序的輸出結(jié)果如下:
n=30
#include< iostream.h >
template< class T >
class Sample
{
T n;
public:
Sample( ){ }
Sample(T i){_________}
Sample&operator+(const Sample&);
void disp( ){cout<<"n="<
};
template
Sample&Sample::operator+(const Sample&s)
{
static Sampletemp;
return temp;
}
void main( )
{
Samples1(10),s2(20),s3;
s3=s1+s2;
s3.disp();
}
48.在下劃線處填上適當(dāng)?shù)恼Z句,使程序的輸出結(jié)果如下:
1 2 3 4 5 6 7 8 9 10
#include
class Sample
{
int A[10][10];
public:
int &operator()(int,int);
};
int &Sample::operator()(int x,int y)
{
return A[x][y];
}
void main()
{
Sample a;
int i,j;
_________
for(j=0;j<10;j++)
_________
for(i=0;i
cout<
cout<
}
49.在下劃線處填上適當(dāng)?shù)木渥?,完成函?shù)的定義。
#include
class Sample
{
int x;
public:
Sample( ){ };
_________{x=a;}
_________{x=a.x++ +10;}
void disp( ){cout<<"x="<
};
void main( )
{
Sample s1(2),s2(s1);
s1.disp( );
s2.disp( );
}
50.輸入一個(gè)字符串,將其逆序后輸出。
#include
using namespace std;
void main()
{
char a[50];memset(a,0,sizeof(a));
int i=0,j;
char t;
cin.getline(a,50,'\ n';
for(i=0,j=strlen(a)-1;i<_________;i++,j ―― )
{
t=a[i];
a [j]=t;
}
cout<
}
五、程序分析題(本大題共4小題,每小題5分,共20分)
51.(給出下面程序的輸出結(jié)果
#include
class example
{
int a;
public:
example(int b){a=b++;}
void print( ){a=a+1;cout<
void print( )const{cout<
};
void main( )
{
example x(3);
const example y(2);
x.print( );
y.print( );
}
52.給出下面程序的輸出結(jié)果
#include
class Sample
{
int x,y;
public:
Sample( ){x=y=0;}
Sample(int a,int b){x=a;y=b;}
~Sample()
{
if(x==y)
cout<<"x=y"<
else
cout<<"x!=y"<
}
void disp()
{
cout<<"x="<
}
};
void main()
{
Sample sl(2,3);
s1.disp();
}
53.給出下面程序的輸出結(jié)果
#include
class Sample
{
int n;
static int sum;
public:
Sample(int x){n=x;}
void add( ){sum+=n;}
void disp( )
{
cout<<"n="<
}
};
int Sample::sum=0;
void main( )
{
Sample a(2),b(3),c(5);
a.add( );
a.disp( );
b.add( );
b.disp( );
c.add( );
c.disp( );
}
54.給出下面程序的輸出結(jié)果
#include
class A{
private:
friend class B;
A(int val=0):data(val),use(1){}
int use,data;
};
class B{
public:
A*pa;
B(int val=0):pa(new A(val)){ }
~B( ){if( -- pa ->use==0)delete pa;}
B(B&rhs){ + + rhs ->use;pa=rhs.pa;}
B&operator=(B&rhs);
A*operator ->( ){return pa;}
void Display( ){
cout<<"data="<data
<<",use="<use<
}
};
B&B::operator=(B&rhs)
{
if(this = = &rhs)return*this;
if( -- pa ->use = =0)delete pa;
+ + rhs ->use;
pa=rhs.pa;
return * this;
}
int main( ){
B b1(1),b2(b1),b3(3);
b1.Display( );
b2.Display( );
b3.Display( );
b3=b1;
b1.Display( );
b3.Display( );
return 0;
六、程序設(shè)計(jì)題(本大題共1小題,每小題10分,共10分)
55.已知一個(gè)student類,包括學(xué)姓名,成績(jī)和等級(jí),不含任何成員函數(shù).process為學(xué)生信息處理類.
class student{
char name[ 10 ];
int deg;
char level[ 7 ];
friend class process:
public:
student(char na[ ],int d){strcpy(name,na);deg=d;}
} ;
class process{
public:
void trans(student s[ ]){…}//根據(jù)學(xué)生成績(jī)計(jì)算學(xué)生等級(jí)(優(yōu)大于89分,良大于79分,中大于69分,及格大于59分,不及格小于60分).
void disp(student s[ ]){...}//根據(jù)成績(jī)降序打印所有學(xué)生信息
};
要求實(shí)現(xiàn)process類中的兩個(gè)函數(shù):