全國2010年1月高等教育自學考試
C++程序設(shè)計試題
課程代碼:04737
一、單項選擇題(本大題共20小題,每小題1分,共20分)
在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內(nèi)。錯選、多選或未選均無分。
1.在C++中,頭文件擴展名為( )
A..cpp
B..h
C..1ib
D..obj
2.下列符號中,不屬于分隔符的是( )
A.,
B./
C.;
D.{}
3.可替換#definePI3.1415926的語句是( )
A.float PI 3.1415926;
B.const float PI=3.1415926;
C.const PI(3.1415926);
D.const 3.1415926;
4.布爾類型標識符是( )
A.void
B.short
C.long
D.bool
5.下列不是C++語言的基本數(shù)據(jù)類型的是( )
A.字符類型
B.整數(shù)類型
C.邏輯類型
D.枚舉類型
6.C++允許在結(jié)構(gòu)中定義函數(shù),這些函數(shù)稱為( )
A.靜態(tài)函數(shù)
B.構(gòu)造函數(shù)
C.析構(gòu)函數(shù)
D.成員函數(shù)
7.設(shè)函數(shù)void inc(int)將形參加1,如有整型變量int i=10;則執(zhí)行inc(i);后,i的值為( )
A.9
B.10
C.11
D.未知
8.下列哪種默認參數(shù)的聲明是不正確的( )
A. int max(int a,int b,int c,int d=0);
B. int max(int a,int b,int c=0,int d=0);
C. int max(int a=0,int b,int c=0,int d=0);
D. int max(int a,int b=0,int c=0,int d=0);
9.設(shè)int &max(int &,int &)返回兩參數(shù)中較大者,如有兩整型變量int a=10;int b=15;在執(zhí)行max(a,b)++后,a,b值分別為( )
A.10,15
B.11,15
C.10,16
D.1l,16
10.包含哪種語句的函數(shù)不能聲明為內(nèi)聯(lián)函數(shù)( )
A.循環(huán)
B.變量自增自減
C.if...else…
D.變量聲明
11.定義函數(shù)模板中使用的參數(shù)類型標識符需使用下列哪組符號括起來( )
A.<>
B.“”
C.()
D.{}
12.一個類擁有多個構(gòu)造函數(shù),則這些構(gòu)造函數(shù)間為( )
A.重載關(guān)系
B.重復關(guān)系
C.拷貝關(guān)系
D.無關(guān)系
13.對于拷貝構(gòu)造函數(shù)point::point(point& p),下列說明正確的是( )
A.該函數(shù)只能訪問P的私有成員
B.該函數(shù)不能訪問P的公有成員
C.該函數(shù)可以訪問P的私有和公有成員
D.該函數(shù)不能訪問P的成員
14.使用delete[]刪除對象數(shù)組時,描述正確的是( )
A.數(shù)組中各元素都調(diào)用析構(gòu)函數(shù)
B.數(shù)組中各元素都調(diào)用構(gòu)造函數(shù)
C.不調(diào)用析構(gòu)函數(shù)
D.只有首元素調(diào)用析構(gòu)函數(shù)
15.下列哪個指令屬于條件編譯指令( )
A. #elif
B. #error
C. #pragma
D. #include
16.設(shè)類Test中存在成員static int x,則下列哪種初始化方式是正確的( )
A.Test::int x=25;
B.int x=25;
C.int Test::x=25;
D.int Test x=25;
17.下列關(guān)于友元的描述錯誤的是( )
A.成員函數(shù)不可作友元
B.類可以作友元
C.普通函數(shù)可以作友元
D.靜態(tài)函數(shù)可以作友元
18.在繼承中,派生類擁有的基類個數(shù)為( )
A.0個
B.1個
C.多個
D.至少1個
19.基類中的protected成員,通過public派生,其在派生類中的可見性為( )
A.不可訪問
B.private
C.protected
D.public
20.下列哪個不是面向?qū)ο蟮年P(guān)鍵要素( )
A.抽象性
B.結(jié)構(gòu)性
C.封裝性
D.多態(tài)性
二、填空題(本大題共20小題,每小題1分,共20分)
請在每小題的空格中填上正確答案。錯填、不填均無分。
21.在STL庫中用于實現(xiàn)數(shù)組內(nèi)容反轉(zhuǎn)的函數(shù)是______。
22.若要使用C++標準類庫,需要指定相應(yīng)的命名空間,所用的語句是______。
23.C++語言中的整數(shù)常量有4種描述類型:十進制常量、長整型常量、八進制常量和______。
24.聲明一個名為a的整型引用變量所使用的語句是______。
25.重載的運算符仍保留原有的優(yōu)先級、______和語法結(jié)構(gòu)。
26.執(zhí)行代碼
int b=100;
cout<程序的輸出結(jié)果是______。
27.帶有純虛函數(shù)的類稱為抽象類,它只能作為______來使用。
28.使用______作為函數(shù)參數(shù),實參對象和形參對象代表同一對象,改變形參對象的值就是改變實參對象的值。
29.UML中對象之間的靜態(tài)關(guān)系是通過對象屬性之間的連接反映的,稱之為______。
30.如果一個模板聲明列出多個參數(shù),則多個參數(shù)之間必須使用逗號隔開,每個參數(shù)都必須重復使用關(guān)鍵字______。
31.C++類的構(gòu)造函數(shù)名與______名稱一樣,且沒有返回值。
32.C++規(guī)定,當一個成員函數(shù)被調(diào)用時,系統(tǒng)自動向它傳遞一個隱含的參數(shù),該參數(shù)是一個指向調(diào)用該函數(shù)的對象的指針,該指針被稱為______指針。
33.聲明一個常成員函數(shù)Fun,其返回類型為char,第一個參數(shù)類型為int,第二個參數(shù)類型為double,函數(shù)Fun的聲明原型是______。
34.C++語言中的“聚合”隱含了兩種實現(xiàn)方式,一種是______,另一種是用一個類的對象作為一種廣義的數(shù)據(jù)類型來定義整體對象的一個屬性。
35.簡單成員函數(shù)是指聲明中不含const、______和static關(guān)鍵字的函數(shù)。
36.在派生類中繼承的基類成員的初始化,需要由派生類的構(gòu)造函數(shù)調(diào)用基類的______來完成。
37.在C++中,利用向量類模板定義一個具有20個int的向量,其所有元素被置為1,實現(xiàn)此操作的語句是______。
38.vector類中用于獲取無需再次分配內(nèi)存就能容納的對象個數(shù)的方法是______。
39.動態(tài)聯(lián)編是程序運行到需要的語句處才動態(tài)確定的,這稱為______多態(tài)性。
40.C++重載“=”運算符的函數(shù)名是______。
三、改錯題(本大題共5小題,每小題4分,共20分)
下面的每題中有一處錯誤,請用下橫線標出錯誤所在行并給出修改意見
41.#include
#define PI 3.14;
void main()
{
double i;
int r;
cout<<″輸入圓形半徑:″;
cin>>r;
i=2 * PI * r;
cout<<″圓形周長=″< i=PI * r * r;
cout<<″圓形面積=″< }
42.#include
class A
{
private:
int x,y;
public:
A(int a=0,b=1);
void Show();
};
A::A(int a,int b)
{
x=a;
y=b;
}
void A::Show()
{
cout<<″x=″< cout<<″y=″< }
43.#include
class A
{
unsigned char var;
public:
A(unsigned char x){
var=x:
}
void print(){
cout<<″var=″< }
};
void main()
{
A a(″x″) ;
a. print ();
}
44. #include < iostream. h>
class Class
{
public:
void print(int a,int b) {
cout< < ″int:″ < < a < < endl;
cout < < ″int:″ < < b < < endl;
}
void print(char * a,char * b) {
cout< < ″string:″ < < a < < endl;
cout < <″ string:″ < < b < < endl;
}
void print(char * a,unsigned int b){
cout < < ″string:″ < < a < < endl;
cout < < ″int:″ < < b < < endl;
}
};
void main()
{
Class cls;
cls. print(10,20);
cls. print(′c′,1);
cls. print(′x′,′y′);
cls. print(″Hello!″,0);
}
45. #include < iostream. h >
class Class
{
private:
int val;
public:
void func( int a)
{
val = a;
}
};
void main()
{
Class * cls ;
cls - > func(10) ;
}
四、完成程序題(本大題共5小題,每題4分,共20分)
46.將下面程序補充完整,使程序計算100以內(nèi)所有可被7整除的自然數(shù)之和。
#include
void main()
{
int x=1;
int sum=0;
while(true)
{
if(x>100){
______;
}
if(______){
sum=sum+x;
}
x++;
}
cout< }
47.將下面程序補充完整,使程序執(zhí)行結(jié)果為9。
#include
class Class{
public:
______{
x=a;
}
______{
return x * x;
}
private:
int x;
};
void main()
{
Class a(3);
cout<}
48.將下面程序補充完整,使程序正確的初始化私有變量var及釋放資源。
class Class
{
private:
int * var;
public:
Class(int num);
~Class();
};
Class::Class(int num)
{
_______;
}
Class::~Class()
{
_______;
}
49.將下面程序補充完整,使程序的輸出結(jié)果為:
ClassA::Print
ClassB::Print
程序如下:
#include
class Base
{
public:
virtual void Print() const {
cout<<″Base::Print″< }
};
class ClassA:public Base
{
public:
void Print()const{cout<<″ClassA::Print″< };
class ClassB:public Base
{
public:
void Print()const{cout<<″ClassB::Print″< };
void Print(______)
{
______;
}
void main()
{
ClassA a;
ClassB b;
Print(a);
Print(b);
}
50.下列程序的運行結(jié)果如下:
x=22,y=22
根據(jù)結(jié)果將程序補充完整。
#include
template <______>
void f(______)
{
if(sizeof(T1)>sizeof(T2))
x=(T1)y;
else
y=(T2)x;
}
void main(){
double x=134.2;
int y=22;
f(x,y);
cout<<″x=″< }
五、程序分析題(本大題共2小題,每小題5分,共10分)
請給出下面程序的輸出結(jié)果
51. #include < iostream. h >
class Class
{
public:
static int var;
Class()
{
var+ +;
}
};
int Class::var = 0;
void main()
{
cout < < ″Class::var =″ < < Class: : var < < endl;
Class cl ;
cout < <″cl. var=″ < Class c2, c3 ;
cout < < ″c2. var =″ < < c2. var < < endl;
}
52. #include < iostream. h >
class A
{
public:
A();
void Show() ;
~A();
private:
static int c;
};
int A::c =0;
A::A()
{
cout < < ″constructor.″ < < endl;
c+ =10;
}
void A: :Show()
{
cout< < ″c=″ < }
A::~A()
{
cout < < ″destructor. ″ < < endl;
}
void main()
{
A a,b;
a. Show();
b. Show();
}
六、程序設(shè)計題(本大題共l小題,共10分)
53.利用LOCATION類,使用繼承定義圓類CIRCLE,圓由圓心和半徑構(gòu)成。提供得到圓心坐標和半徑的成員函數(shù)、以及計算圓的周長和面積的成員函數(shù)。在主程序中創(chuàng)建兩個圓A和B,圓心坐標分別為(0,3)、(3,7),按如下格式輸出兩個圓的圓心坐標、周長和面積,并計算和輸出兩個圓的圓心之間的距離。考試大收集整理
A:(xl,y1,r1),Girth=g1,Area=a1
B:(x2,y2,r2),Girth=g2,Area=a2
A(xl,y1),B(x2,y2),Distance=d
定義LOCATION類,該類沒有“繼承”等現(xiàn)象。注意二維坐標點之間的距離公式。
class LOCATION{
double x,y;
public: virtual double getx()const{return x;};
virtual double gety()const{return y;};
virtual double dist(LOCATION &s)const;
LOCATION(double x,double y):x(x),y(y){};};
double LOCATION::dist(LOCATION &s)const{
double xd=s.x — x,yd=s.y — y;
return sqrt(xd*xd+yd*yd);}
C++程序設(shè)計試題
課程代碼:04737
一、單項選擇題(本大題共20小題,每小題1分,共20分)
在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內(nèi)。錯選、多選或未選均無分。
1.在C++中,頭文件擴展名為( )
A..cpp
B..h
C..1ib
D..obj
2.下列符號中,不屬于分隔符的是( )
A.,
B./
C.;
D.{}
3.可替換#definePI3.1415926的語句是( )
A.float PI 3.1415926;
B.const float PI=3.1415926;
C.const PI(3.1415926);
D.const 3.1415926;
4.布爾類型標識符是( )
A.void
B.short
C.long
D.bool
5.下列不是C++語言的基本數(shù)據(jù)類型的是( )
A.字符類型
B.整數(shù)類型
C.邏輯類型
D.枚舉類型
6.C++允許在結(jié)構(gòu)中定義函數(shù),這些函數(shù)稱為( )
A.靜態(tài)函數(shù)
B.構(gòu)造函數(shù)
C.析構(gòu)函數(shù)
D.成員函數(shù)
7.設(shè)函數(shù)void inc(int)將形參加1,如有整型變量int i=10;則執(zhí)行inc(i);后,i的值為( )
A.9
B.10
C.11
D.未知
8.下列哪種默認參數(shù)的聲明是不正確的( )
A. int max(int a,int b,int c,int d=0);
B. int max(int a,int b,int c=0,int d=0);
C. int max(int a=0,int b,int c=0,int d=0);
D. int max(int a,int b=0,int c=0,int d=0);
9.設(shè)int &max(int &,int &)返回兩參數(shù)中較大者,如有兩整型變量int a=10;int b=15;在執(zhí)行max(a,b)++后,a,b值分別為( )
A.10,15
B.11,15
C.10,16
D.1l,16
10.包含哪種語句的函數(shù)不能聲明為內(nèi)聯(lián)函數(shù)( )
A.循環(huán)
B.變量自增自減
C.if...else…
D.變量聲明
11.定義函數(shù)模板中使用的參數(shù)類型標識符需使用下列哪組符號括起來( )
A.<>
B.“”
C.()
D.{}
12.一個類擁有多個構(gòu)造函數(shù),則這些構(gòu)造函數(shù)間為( )
A.重載關(guān)系
B.重復關(guān)系
C.拷貝關(guān)系
D.無關(guān)系
13.對于拷貝構(gòu)造函數(shù)point::point(point& p),下列說明正確的是( )
A.該函數(shù)只能訪問P的私有成員
B.該函數(shù)不能訪問P的公有成員
C.該函數(shù)可以訪問P的私有和公有成員
D.該函數(shù)不能訪問P的成員
14.使用delete[]刪除對象數(shù)組時,描述正確的是( )
A.數(shù)組中各元素都調(diào)用析構(gòu)函數(shù)
B.數(shù)組中各元素都調(diào)用構(gòu)造函數(shù)
C.不調(diào)用析構(gòu)函數(shù)
D.只有首元素調(diào)用析構(gòu)函數(shù)
15.下列哪個指令屬于條件編譯指令( )
A. #elif
B. #error
C. #pragma
D. #include
16.設(shè)類Test中存在成員static int x,則下列哪種初始化方式是正確的( )
A.Test::int x=25;
B.int x=25;
C.int Test::x=25;
D.int Test x=25;
17.下列關(guān)于友元的描述錯誤的是( )
A.成員函數(shù)不可作友元
B.類可以作友元
C.普通函數(shù)可以作友元
D.靜態(tài)函數(shù)可以作友元
18.在繼承中,派生類擁有的基類個數(shù)為( )
A.0個
B.1個
C.多個
D.至少1個
19.基類中的protected成員,通過public派生,其在派生類中的可見性為( )
A.不可訪問
B.private
C.protected
D.public
20.下列哪個不是面向?qū)ο蟮年P(guān)鍵要素( )
A.抽象性
B.結(jié)構(gòu)性
C.封裝性
D.多態(tài)性
二、填空題(本大題共20小題,每小題1分,共20分)
請在每小題的空格中填上正確答案。錯填、不填均無分。
21.在STL庫中用于實現(xiàn)數(shù)組內(nèi)容反轉(zhuǎn)的函數(shù)是______。
22.若要使用C++標準類庫,需要指定相應(yīng)的命名空間,所用的語句是______。
23.C++語言中的整數(shù)常量有4種描述類型:十進制常量、長整型常量、八進制常量和______。
24.聲明一個名為a的整型引用變量所使用的語句是______。
25.重載的運算符仍保留原有的優(yōu)先級、______和語法結(jié)構(gòu)。
26.執(zhí)行代碼
int b=100;
cout<程序的輸出結(jié)果是______。
27.帶有純虛函數(shù)的類稱為抽象類,它只能作為______來使用。
28.使用______作為函數(shù)參數(shù),實參對象和形參對象代表同一對象,改變形參對象的值就是改變實參對象的值。
29.UML中對象之間的靜態(tài)關(guān)系是通過對象屬性之間的連接反映的,稱之為______。
30.如果一個模板聲明列出多個參數(shù),則多個參數(shù)之間必須使用逗號隔開,每個參數(shù)都必須重復使用關(guān)鍵字______。
31.C++類的構(gòu)造函數(shù)名與______名稱一樣,且沒有返回值。
32.C++規(guī)定,當一個成員函數(shù)被調(diào)用時,系統(tǒng)自動向它傳遞一個隱含的參數(shù),該參數(shù)是一個指向調(diào)用該函數(shù)的對象的指針,該指針被稱為______指針。
33.聲明一個常成員函數(shù)Fun,其返回類型為char,第一個參數(shù)類型為int,第二個參數(shù)類型為double,函數(shù)Fun的聲明原型是______。
34.C++語言中的“聚合”隱含了兩種實現(xiàn)方式,一種是______,另一種是用一個類的對象作為一種廣義的數(shù)據(jù)類型來定義整體對象的一個屬性。
35.簡單成員函數(shù)是指聲明中不含const、______和static關(guān)鍵字的函數(shù)。
36.在派生類中繼承的基類成員的初始化,需要由派生類的構(gòu)造函數(shù)調(diào)用基類的______來完成。
37.在C++中,利用向量類模板定義一個具有20個int的向量,其所有元素被置為1,實現(xiàn)此操作的語句是______。
38.vector類中用于獲取無需再次分配內(nèi)存就能容納的對象個數(shù)的方法是______。
39.動態(tài)聯(lián)編是程序運行到需要的語句處才動態(tài)確定的,這稱為______多態(tài)性。
40.C++重載“=”運算符的函數(shù)名是______。
三、改錯題(本大題共5小題,每小題4分,共20分)
下面的每題中有一處錯誤,請用下橫線標出錯誤所在行并給出修改意見
41.#include
#define PI 3.14;
void main()
{
double i;
int r;
cout<<″輸入圓形半徑:″;
cin>>r;
i=2 * PI * r;
cout<<″圓形周長=″< i=PI * r * r;
cout<<″圓形面積=″< }
42.#include
class A
{
private:
int x,y;
public:
A(int a=0,b=1);
void Show();
};
A::A(int a,int b)
{
x=a;
y=b;
}
void A::Show()
{
cout<<″x=″<
43.#include
class A
{
unsigned char var;
public:
A(unsigned char x){
var=x:
}
void print(){
cout<<″var=″< }
};
void main()
{
A a(″x″) ;
a. print ();
}
44. #include < iostream. h>
class Class
{
public:
void print(int a,int b) {
cout< < ″int:″ < < a < < endl;
cout < < ″int:″ < < b < < endl;
}
void print(char * a,char * b) {
cout< < ″string:″ < < a < < endl;
cout < <″ string:″ < < b < < endl;
}
void print(char * a,unsigned int b){
cout < < ″string:″ < < a < < endl;
cout < < ″int:″ < < b < < endl;
}
};
void main()
{
Class cls;
cls. print(10,20);
cls. print(′c′,1);
cls. print(′x′,′y′);
cls. print(″Hello!″,0);
}
45. #include < iostream. h >
class Class
{
private:
int val;
public:
void func( int a)
{
val = a;
}
};
void main()
{
Class * cls ;
cls - > func(10) ;
}
四、完成程序題(本大題共5小題,每題4分,共20分)
46.將下面程序補充完整,使程序計算100以內(nèi)所有可被7整除的自然數(shù)之和。
#include
void main()
{
int x=1;
int sum=0;
while(true)
{
if(x>100){
______;
}
if(______){
sum=sum+x;
}
x++;
}
cout<
47.將下面程序補充完整,使程序執(zhí)行結(jié)果為9。
#include
class Class{
public:
______{
x=a;
}
______{
return x * x;
}
private:
int x;
};
void main()
{
Class a(3);
cout<}
48.將下面程序補充完整,使程序正確的初始化私有變量var及釋放資源。
class Class
{
private:
int * var;
public:
Class(int num);
~Class();
};
Class::Class(int num)
{
_______;
}
Class::~Class()
{
_______;
}
49.將下面程序補充完整,使程序的輸出結(jié)果為:
ClassA::Print
ClassB::Print
程序如下:
#include
class Base
{
public:
virtual void Print() const {
cout<<″Base::Print″<
};
class ClassA:public Base
{
public:
void Print()const{cout<<″ClassA::Print″<
class ClassB:public Base
{
public:
void Print()const{cout<<″ClassB::Print″<
void Print(______)
{
______;
}
void main()
{
ClassA a;
ClassB b;
Print(a);
Print(b);
}
50.下列程序的運行結(jié)果如下:
x=22,y=22
根據(jù)結(jié)果將程序補充完整。
#include
template <______>
void f(______)
{
if(sizeof(T1)>sizeof(T2))
x=(T1)y;
else
y=(T2)x;
}
void main(){
double x=134.2;
int y=22;
f(x,y);
cout<<″x=″<
五、程序分析題(本大題共2小題,每小題5分,共10分)
請給出下面程序的輸出結(jié)果
51. #include < iostream. h >
class Class
{
public:
static int var;
Class()
{
var+ +;
}
};
int Class::var = 0;
void main()
{
cout < < ″Class::var =″ < < Class: : var < < endl;
Class cl ;
cout < <″cl. var=″ <
cout < < ″c2. var =″ < < c2. var < < endl;
}
52. #include < iostream. h >
class A
{
public:
A();
void Show() ;
~A();
private:
static int c;
};
int A::c =0;
A::A()
{
cout < < ″constructor.″ < < endl;
c+ =10;
}
void A: :Show()
{
cout< < ″c=″ <
A::~A()
{
cout < < ″destructor. ″ < < endl;
}
void main()
{
A a,b;
a. Show();
b. Show();
}
六、程序設(shè)計題(本大題共l小題,共10分)
53.利用LOCATION類,使用繼承定義圓類CIRCLE,圓由圓心和半徑構(gòu)成。提供得到圓心坐標和半徑的成員函數(shù)、以及計算圓的周長和面積的成員函數(shù)。在主程序中創(chuàng)建兩個圓A和B,圓心坐標分別為(0,3)、(3,7),按如下格式輸出兩個圓的圓心坐標、周長和面積,并計算和輸出兩個圓的圓心之間的距離。考試大收集整理
A:(xl,y1,r1),Girth=g1,Area=a1
B:(x2,y2,r2),Girth=g2,Area=a2
A(xl,y1),B(x2,y2),Distance=d
定義LOCATION類,該類沒有“繼承”等現(xiàn)象。注意二維坐標點之間的距離公式。
class LOCATION{
double x,y;
public: virtual double getx()const{return x;};
virtual double gety()const{return y;};
virtual double dist(LOCATION &s)const;
LOCATION(double x,double y):x(x),y(y){};};
double LOCATION::dist(LOCATION &s)const{
double xd=s.x — x,yd=s.y — y;
return sqrt(xd*xd+yd*yd);}