為大家整理的2013年10月全國自考C++程序設(shè)計真題,供大家參考。
全國2 0 1 3年1 0月高等教育自學(xué)考試
C++程序設(shè)計試題
課程代碼:04737
請考生按規(guī)定用筆將所有試題的答案涂、寫在答題紙上。
選擇題部分
注意事項:
1.答題前,考生務(wù)必將自己的考試課程名稱、姓名、準(zhǔn)考證號用黑色字跡的簽字筆或鋼筆填寫在答題紙規(guī)定的位置上。
2.每小題選出答案后,用2B鉛筆把答題紙上對應(yīng)題目的答案標(biāo)號涂黑。如需改動,用橡皮擦干凈后,再選涂其他答案標(biāo)號。不能答在試題卷上。
一、單項選擇題(本大題共20小題,每小題1分,共20分)
在每小題列出的四個備選項中只有一個是符合題目要求的,請將其選出并將“答題紙”的相應(yīng)代碼涂黑。錯涂、多涂或未涂均無分。
1.下列不屬于C++關(guān)鍵字的是
A. extern
B.goto
C.free
D.default
2.C++中定義標(biāo)準(zhǔn)輸入的庫為
A.stdio
B.math
C.istream
D.stdlib
3.My是一個類,則執(zhí)行語句My a[3],*[2];之后,自動調(diào)用構(gòu)造函數(shù)次數(shù)為
A.2
B.3
C.4
D.5
4.下列語句錯誤的是
A. int val( 20);
B.extern int val( 20);
C. const int val;
D.extern const int val;
5.下列說法中,有關(guān)構(gòu)造函數(shù)是正確的是
A.任何一類必定有構(gòu)造函數(shù)
B.可定義沒有構(gòu)造函數(shù)的類
C.構(gòu)造函數(shù)不能重載
D.任何一類必定有缺省的構(gòu)造函數(shù)
6.下面關(guān)于類和對象說法不正確是
A.類由數(shù)據(jù)與函數(shù)組成
B.一個對象必屬于某個類
C.對象是類的實例
D.一個類的對象只有一個
7.下面選項中不是類成員函數(shù)的是
A.構(gòu)造函數(shù)
B.析構(gòu)函數(shù)
C.友元函數(shù)
D.靜態(tài)函數(shù)
8.在C++中類之間的繼承關(guān)系具有
A.自反性
B.對稱性
C.傳遞性
D.反對稱性
9.C++中類的成員默認(rèn)為
A. public
B.private
C.protected
D.static
10.C++中要實現(xiàn)動態(tài)聯(lián)編,調(diào)用虛函數(shù)時必須使用
A.基類指針
B.類名
C.派生類指針
D.對象名
11.下面對析構(gòu)函數(shù)的正確描述是
A.系統(tǒng)不能提供默認(rèn)的析構(gòu)函數(shù)
B.析構(gòu)函數(shù)必須由用戶定義
C.析構(gòu)函數(shù)沒有參數(shù)
D.析構(gòu)函數(shù)可以設(shè)置默認(rèn)參數(shù)
12.在下面的二維數(shù)定義正確的是
A.int ary[5][ ];
B.int ary[ ][5]={{0,1,2}};
C.int ary[ ][5];
D.int ary[5,5];
13.以下說法中正確的是
A.C++程序總是從第一個定義的函數(shù)開始執(zhí)行
B.C++程序總是從main函數(shù)開始執(zhí)行
C.C++中函數(shù)必須有返回值
D.C++中函數(shù)名必須
14.對C++中主函數(shù)描述正確的是
A.名稱為main,可為多個
B.名稱不限,可為多個
C.名稱為main,必須有且只能有—個
D.名稱不限,必須有且只能有—個
15.下面聲明純虛函數(shù)語句正確的是
A. void fun( ) =0;
B.virtual void fun( )=0;
C. virtual voicl fun( );
D.virtual void fun( ){ };
16.對于拷貝構(gòu)造函數(shù)和賦值操作的關(guān)系,正確的描述是
A.拷貝構(gòu)造函數(shù)和賦值操作是完全一樣的操作
B.進行賦值操作時,不會調(diào)用類的構(gòu)造函數(shù)
C.當(dāng)調(diào)用拷貝構(gòu)造函數(shù)時,類的對象正在被建立并被初始化
D.拷貝構(gòu)造函數(shù)和賦值操作不能在同一個類中被同時定義
17.使用重載函數(shù)的目的是
A.共享函數(shù)數(shù)據(jù)
B.減少代碼量
C.優(yōu)化運行效率
D.提高可讀性
18.C++語言對C語言做了很多改進,C++語言相對于C語言的根本的變化是
A.增加了一些新的運算符
B.允許函數(shù)重載,并允許設(shè)置缺省參數(shù)
C.規(guī)定函數(shù)說明符必須用原型
D.引進了類和對象的概念
19.假定有“char * p="Hello";”,若要輸出這個字符串的地址值正確的寫法為
A. cout<<*p;
B.cout<< FONT>
C. cout<<&p;
D.cout<<(void*)p;
20.從本質(zhì)上看,引用變量是被引用變量的
A.拷貝
B.別名
C.復(fù)制
D.克隆
非選擇題部分
注意事項:
用黑色字跡的簽字筆或鋼筆將答案寫在答題紙上,不能答在試題卷上。
二、填空題(本大題共20小題,每小題1分,共20分)
21.C++程序的編譯是以_____為單位進行的。
22.C++語言支持的兩種多態(tài)性分別是編譯時的多態(tài)性和____的多態(tài)性。
23.重載的運算符保持其原有的操作符個數(shù)、_____和結(jié)合性不變。
24.在C++中,函數(shù)的參數(shù)有兩種傳遞方式,它們分別是值傳遞和____ 。
25.含有_____的類稱為抽象類。
26.C++程序運行時的內(nèi)存空間可以分成全局?jǐn)?shù)據(jù)區(qū),堆區(qū),棧區(qū)和_____。
27.對于無返回值函數(shù),定義函數(shù)時要用_____修飾函數(shù)類型。
28.定義重載函數(shù)必須在參數(shù)的個數(shù)或參數(shù)的_____上與其它同名函數(shù)不同。
29.拷貝構(gòu)造函數(shù)是在用一個對象初始化另一個對象時被調(diào)用,系統(tǒng)缺省的拷貝構(gòu)造函數(shù)
的工作方法是_____。
30.以面向?qū)ο蠓椒?gòu)造的系統(tǒng),其基本單位是_____。
31.C++中定義友元函數(shù)使用的關(guān)鍵字為____ 。
32.當(dāng)一個成員函數(shù)被調(diào)用時,該成員函數(shù)的____ 指向調(diào)用它的對象。
33.類可將實現(xiàn)細(xì)節(jié)隱藏起來,這種機制稱為____ 。
34.在面向?qū)ο蟮某绦蛟O(shè)計中,通過封裝實現(xiàn)數(shù)據(jù)隱藏;通過_____實現(xiàn)代碼的復(fù)用。
35.在公有繼承的中基類數(shù)據(jù)成員在派生類中的訪問權(quán)限____ 。
36.復(fù)雜對象可以由簡單對象構(gòu)成,這種現(xiàn)象稱為____ 。
37.如有“char * p="Hello";”,則語句“cout<<*(p+1);”輸出值是_____。
38.基類和派生類的關(guān)系稱為_____。
39.C++對其對象的數(shù)據(jù)成員和成員函數(shù)的訪問是通過_____來限制的。
40.假定x =10,則表達式x< =10? 20:30的值為_____ 。
三、改錯題(本大題共5小題,每小題4分,共20分)
下面的每題中有一處錯誤,請在“答題紙”上將錯誤所在行寫出并給出修改意見。
41. #include
class point{
private: float x,y;
public: point( float a,float b){x=a;y=b;}
void f(){x=0;y =0;}
void getx(){cout<<< FONT>
void gety(){cout<<< FONT>
} ;
main( ) {
point a(3.5);
a.getx( );
}
42. #include < iostream. h >
main( ) {
int x =7;
const int *p = &x;
*p =99;
cout << *p << endl;
}
43. #include < iostream. h >
class test{
private: int x;y;
public: voicl f( int a,int b) { x = a;y = b; }
int max( ) { return(x > y) ? x:y; }
};
main( ) {
test a;
a. f( 1 ,3) ;
cout << a. max( ) << endl;
}
44. #include
class test{
private: int x;
public:test(int a) { x = a; }
void set(int a) { x = a;}
void get( ) { cout << x << endl; }
};
class testl: public test{
private: int x;
public :testl ( int a) { x = a; }
void set( int a) { x = a;}
void get( ) { cout <<′′<< endl; }
};
45. #include < iostream. h >
class f{
private: int x,y;
public: fl ( int a,int b) { x = a;y = b; }
void print( ) { cout << x << --<< y << endl; }
};
main( ) {
f a;
float x = 1.0,y = 2. 0;
a. fl ( x,y) ;
a. print( ) ;
}
四、完成程序題(本大題共5小題,每題4分,共20分)
46.在答題紙上填上缺少的部分。源程序如下:
#include
using namespace std;
class base
{
int a,b;
public:
base( int x,int y){a=x;b=y;}
void show( )
{
cout<<<< SPAN>″, ″<<< SPAN>
}
}
void main( )
{
base b(78,87);
b.show(b);
}
47.在答題紙上填上缺少的部分。源程序如下:
#include
#include
using namespace std;
void main( )
{
myf("ab. txt");//定義輸出流文件,并初始化
<< "This ia a TXT file";//向文件輸入字符串
myf. close ( );
}
48.在下面程序中的答題紙上填上適當(dāng)?shù)某绦?,使程序的輸出結(jié)果如下:
67 ,90
源程序如下:
#include
using namespace std;
class base
{
pnvate:
int x,y;
priblic:
void initxy( int a,int b){x=a;y=b;}
void show( base*p);
} ;
inline void base::show( )
{
cout<< p- >x<<""
}
void print( base*p)
{
p -> show(p);
}
void main()
{
base a;
a.initxy(67 ,90);
print( );
}
49.下面程序給出了一個從普通的基類派生出一個模板類的方法,在答題紙上填上缺少的
部分。
#include
using namespace std;
class Base
{
public:
Base(int a){x=a;}
int Getx(){return x;
void showb(){cout<<< FONT>
private:
int x;
};
template
class derived: public Base
{
public:
derived(T a,int b):____
{y=a;}
T Gety( ){return y;}
void showd( ){cout<<<" FONT ?<<< endl;}<> private:
} ;
void main ( )
{ Base A(458);
A.showb ( );
derived < char * >B ("It is" ,1357);
B.showd ( );
}
50.下面程序的運行結(jié)果如下:
20,22
60,22
在答題紙上填上缺少的部分。源程序如下:
#include < iostream >
using namespace std;
class base
{
private:
const int a;
static const int b;
public:
base( int);
void Show();
};
=22;
: a (i){ } //初始化
void base : :Show( )
{cout<<<","<<< FONT>
void main ( )
{
base al (20) ,a2 (60);
al. Show ( );
a2. Show ( );
}
五、程序分析題(本大題共2小題,每小題5分,共10分)
51.給出下面程序的輸出結(jié)果
#include
using namespace std;
class base
{
int x;
public:
void setx( int a){x=a;}
int getx ( ){return x;}
} ;
void main ( )
{
int*p;
base a;
a.setx (15);
p= new int (a. getx( ));
cout < < * p;
}
52.給出下面程序的輸出結(jié)果
#include < iostream >
using namespace std;
class base
{
private:
int x;
public:
void setx (int a){x=a;}
int getx ( ){return x;}
} ;
void main ( )
{
base a,b;
a.setx (89);
b =a;
cout < < a.getx ( ) < < endl;
cout < < b.getx ( ) < < endl;
}
六、程序設(shè)計題(本大題共10分)
53.在字符串類string中實現(xiàn)一個判斷函數(shù),該函數(shù)功能是統(tǒng)計某一字符串類對象(僅有單詞和空格組成)有多少個單詞,同時保存所有單詞在字符串中的起始地址(設(shè)該字符串不超過100個單詞)
#include < iostream. h >
#include < string >
class str{
string s; int n,a [ 100 ],j ,1;
public:str ( string&a){s=a;n=0;j=0;l=0;}
....test (....);
int * geta ( ){ return a;}
} ;
請寫出test函數(shù)的過程(如果需要形式參數(shù),請給出形參類型和數(shù)量,以及返回值類型)
全國2 0 1 3年1 0月高等教育自學(xué)考試
C++程序設(shè)計試題
課程代碼:04737
請考生按規(guī)定用筆將所有試題的答案涂、寫在答題紙上。
選擇題部分
注意事項:
1.答題前,考生務(wù)必將自己的考試課程名稱、姓名、準(zhǔn)考證號用黑色字跡的簽字筆或鋼筆填寫在答題紙規(guī)定的位置上。
2.每小題選出答案后,用2B鉛筆把答題紙上對應(yīng)題目的答案標(biāo)號涂黑。如需改動,用橡皮擦干凈后,再選涂其他答案標(biāo)號。不能答在試題卷上。
一、單項選擇題(本大題共20小題,每小題1分,共20分)
在每小題列出的四個備選項中只有一個是符合題目要求的,請將其選出并將“答題紙”的相應(yīng)代碼涂黑。錯涂、多涂或未涂均無分。
1.下列不屬于C++關(guān)鍵字的是
A. extern
B.goto
C.free
D.default
2.C++中定義標(biāo)準(zhǔn)輸入的庫為
A.stdio
B.math
C.istream
D.stdlib
3.My是一個類,則執(zhí)行語句My a[3],*[2];之后,自動調(diào)用構(gòu)造函數(shù)次數(shù)為
A.2
B.3
C.4
D.5
4.下列語句錯誤的是
A. int val( 20);
B.extern int val( 20);
C. const int val;
D.extern const int val;
5.下列說法中,有關(guān)構(gòu)造函數(shù)是正確的是
A.任何一類必定有構(gòu)造函數(shù)
B.可定義沒有構(gòu)造函數(shù)的類
C.構(gòu)造函數(shù)不能重載
D.任何一類必定有缺省的構(gòu)造函數(shù)
6.下面關(guān)于類和對象說法不正確是
A.類由數(shù)據(jù)與函數(shù)組成
B.一個對象必屬于某個類
C.對象是類的實例
D.一個類的對象只有一個
7.下面選項中不是類成員函數(shù)的是
A.構(gòu)造函數(shù)
B.析構(gòu)函數(shù)
C.友元函數(shù)
D.靜態(tài)函數(shù)
8.在C++中類之間的繼承關(guān)系具有
A.自反性
B.對稱性
C.傳遞性
D.反對稱性
9.C++中類的成員默認(rèn)為
A. public
B.private
C.protected
D.static
10.C++中要實現(xiàn)動態(tài)聯(lián)編,調(diào)用虛函數(shù)時必須使用
A.基類指針
B.類名
C.派生類指針
D.對象名
11.下面對析構(gòu)函數(shù)的正確描述是
A.系統(tǒng)不能提供默認(rèn)的析構(gòu)函數(shù)
B.析構(gòu)函數(shù)必須由用戶定義
C.析構(gòu)函數(shù)沒有參數(shù)
D.析構(gòu)函數(shù)可以設(shè)置默認(rèn)參數(shù)
12.在下面的二維數(shù)定義正確的是
A.int ary[5][ ];
B.int ary[ ][5]={{0,1,2}};
C.int ary[ ][5];
D.int ary[5,5];
13.以下說法中正確的是
A.C++程序總是從第一個定義的函數(shù)開始執(zhí)行
B.C++程序總是從main函數(shù)開始執(zhí)行
C.C++中函數(shù)必須有返回值
D.C++中函數(shù)名必須
14.對C++中主函數(shù)描述正確的是
A.名稱為main,可為多個
B.名稱不限,可為多個
C.名稱為main,必須有且只能有—個
D.名稱不限,必須有且只能有—個
15.下面聲明純虛函數(shù)語句正確的是
A. void fun( ) =0;
B.virtual void fun( )=0;
C. virtual voicl fun( );
D.virtual void fun( ){ };
16.對于拷貝構(gòu)造函數(shù)和賦值操作的關(guān)系,正確的描述是
A.拷貝構(gòu)造函數(shù)和賦值操作是完全一樣的操作
B.進行賦值操作時,不會調(diào)用類的構(gòu)造函數(shù)
C.當(dāng)調(diào)用拷貝構(gòu)造函數(shù)時,類的對象正在被建立并被初始化
D.拷貝構(gòu)造函數(shù)和賦值操作不能在同一個類中被同時定義
17.使用重載函數(shù)的目的是
A.共享函數(shù)數(shù)據(jù)
B.減少代碼量
C.優(yōu)化運行效率
D.提高可讀性
18.C++語言對C語言做了很多改進,C++語言相對于C語言的根本的變化是
A.增加了一些新的運算符
B.允許函數(shù)重載,并允許設(shè)置缺省參數(shù)
C.規(guī)定函數(shù)說明符必須用原型
D.引進了類和對象的概念
19.假定有“char * p="Hello";”,若要輸出這個字符串的地址值正確的寫法為
A. cout<<*p;
B.cout<< FONT>
C. cout<<&p;
D.cout<<(void*)p;
20.從本質(zhì)上看,引用變量是被引用變量的
A.拷貝
B.別名
C.復(fù)制
D.克隆
非選擇題部分
注意事項:
用黑色字跡的簽字筆或鋼筆將答案寫在答題紙上,不能答在試題卷上。
二、填空題(本大題共20小題,每小題1分,共20分)
21.C++程序的編譯是以_____為單位進行的。
22.C++語言支持的兩種多態(tài)性分別是編譯時的多態(tài)性和____的多態(tài)性。
23.重載的運算符保持其原有的操作符個數(shù)、_____和結(jié)合性不變。
24.在C++中,函數(shù)的參數(shù)有兩種傳遞方式,它們分別是值傳遞和____ 。
25.含有_____的類稱為抽象類。
26.C++程序運行時的內(nèi)存空間可以分成全局?jǐn)?shù)據(jù)區(qū),堆區(qū),棧區(qū)和_____。
27.對于無返回值函數(shù),定義函數(shù)時要用_____修飾函數(shù)類型。
28.定義重載函數(shù)必須在參數(shù)的個數(shù)或參數(shù)的_____上與其它同名函數(shù)不同。
29.拷貝構(gòu)造函數(shù)是在用一個對象初始化另一個對象時被調(diào)用,系統(tǒng)缺省的拷貝構(gòu)造函數(shù)
的工作方法是_____。
30.以面向?qū)ο蠓椒?gòu)造的系統(tǒng),其基本單位是_____。
31.C++中定義友元函數(shù)使用的關(guān)鍵字為____ 。
32.當(dāng)一個成員函數(shù)被調(diào)用時,該成員函數(shù)的____ 指向調(diào)用它的對象。
33.類可將實現(xiàn)細(xì)節(jié)隱藏起來,這種機制稱為____ 。
34.在面向?qū)ο蟮某绦蛟O(shè)計中,通過封裝實現(xiàn)數(shù)據(jù)隱藏;通過_____實現(xiàn)代碼的復(fù)用。
35.在公有繼承的中基類數(shù)據(jù)成員在派生類中的訪問權(quán)限____ 。
36.復(fù)雜對象可以由簡單對象構(gòu)成,這種現(xiàn)象稱為____ 。
37.如有“char * p="Hello";”,則語句“cout<<*(p+1);”輸出值是_____。
38.基類和派生類的關(guān)系稱為_____。
39.C++對其對象的數(shù)據(jù)成員和成員函數(shù)的訪問是通過_____來限制的。
40.假定x =10,則表達式x< =10? 20:30的值為_____ 。
三、改錯題(本大題共5小題,每小題4分,共20分)
下面的每題中有一處錯誤,請在“答題紙”上將錯誤所在行寫出并給出修改意見。
41. #include
class point{
private: float x,y;
public: point( float a,float b){x=a;y=b;}
void f(){x=0;y =0;}
void getx(){cout<<< FONT>
void gety(){cout<<< FONT>
} ;
main( ) {
point a(3.5);
a.getx( );
}
42. #include < iostream. h >
main( ) {
int x =7;
const int *p = &x;
*p =99;
cout << *p << endl;
}
43. #include < iostream. h >
class test{
private: int x;y;
public: voicl f( int a,int b) { x = a;y = b; }
int max( ) { return(x > y) ? x:y; }
};
main( ) {
test a;
a. f( 1 ,3) ;
cout << a. max( ) << endl;
}
44. #include
class test{
private: int x;
public:test(int a) { x = a; }
void set(int a) { x = a;}
void get( ) { cout << x << endl; }
};
class testl: public test{
private: int x;
public :testl ( int a) { x = a; }
void set( int a) { x = a;}
void get( ) { cout <<′′<< endl; }
};
45. #include < iostream. h >
class f{
private: int x,y;
public: fl ( int a,int b) { x = a;y = b; }
void print( ) { cout << x << --<< y << endl; }
};
main( ) {
f a;
float x = 1.0,y = 2. 0;
a. fl ( x,y) ;
a. print( ) ;
}
四、完成程序題(本大題共5小題,每題4分,共20分)
46.在答題紙上填上缺少的部分。源程序如下:
#include
using namespace std;
class base
{
int a,b;
public:
base( int x,int y){a=x;b=y;}
void show( )
{
cout<<<< SPAN>″, ″<<< SPAN>
}
}
void main( )
{
base b(78,87);
b.show(b);
}
47.在答題紙上填上缺少的部分。源程序如下:
#include
#include
using namespace std;
void main( )
{
myf("ab. txt");//定義輸出流文件,并初始化
<< "This ia a TXT file";//向文件輸入字符串
myf. close ( );
}
48.在下面程序中的答題紙上填上適當(dāng)?shù)某绦?,使程序的輸出結(jié)果如下:
67 ,90
源程序如下:
#include
using namespace std;
class base
{
pnvate:
int x,y;
priblic:
void initxy( int a,int b){x=a;y=b;}
void show( base*p);
} ;
inline void base::show( )
{
cout<< p- >x<<""
}
void print( base*p)
{
p -> show(p);
}
void main()
{
base a;
a.initxy(67 ,90);
print( );
}
49.下面程序給出了一個從普通的基類派生出一個模板類的方法,在答題紙上填上缺少的
部分。
#include
using namespace std;
class Base
{
public:
Base(int a){x=a;}
int Getx(){return x;
void showb(){cout<<< FONT>
private:
int x;
};
template
class derived: public Base
{
public:
derived(T a,int b):____
{y=a;}
T Gety( ){return y;}
void showd( ){cout<<<" FONT ?<<< endl;}<> private:
} ;
void main ( )
{ Base A(458);
A.showb ( );
derived < char * >B ("It is" ,1357);
B.showd ( );
}
50.下面程序的運行結(jié)果如下:
20,22
60,22
在答題紙上填上缺少的部分。源程序如下:
#include < iostream >
using namespace std;
class base
{
private:
const int a;
static const int b;
public:
base( int);
void Show();
};
=22;
: a (i){ } //初始化
void base : :Show( )
{cout<<<","<<< FONT>
void main ( )
{
base al (20) ,a2 (60);
al. Show ( );
a2. Show ( );
}
五、程序分析題(本大題共2小題,每小題5分,共10分)
51.給出下面程序的輸出結(jié)果
#include
using namespace std;
class base
{
int x;
public:
void setx( int a){x=a;}
int getx ( ){return x;}
} ;
void main ( )
{
int*p;
base a;
a.setx (15);
p= new int (a. getx( ));
cout < < * p;
}
52.給出下面程序的輸出結(jié)果
#include < iostream >
using namespace std;
class base
{
private:
int x;
public:
void setx (int a){x=a;}
int getx ( ){return x;}
} ;
void main ( )
{
base a,b;
a.setx (89);
b =a;
cout < < a.getx ( ) < < endl;
cout < < b.getx ( ) < < endl;
}
六、程序設(shè)計題(本大題共10分)
53.在字符串類string中實現(xiàn)一個判斷函數(shù),該函數(shù)功能是統(tǒng)計某一字符串類對象(僅有單詞和空格組成)有多少個單詞,同時保存所有單詞在字符串中的起始地址(設(shè)該字符串不超過100個單詞)
#include < iostream. h >
#include < string >
class str{
string s; int n,a [ 100 ],j ,1;
public:str ( string&a){s=a;n=0;j=0;l=0;}
....test (....);
int * geta ( ){ return a;}
} ;
請寫出test函數(shù)的過程(如果需要形式參數(shù),請給出形參類型和數(shù)量,以及返回值類型)