一、填空題(答案寫在答卷相應(yīng)的橫線上。每小題1分,共10分)
1.面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的先驅(qū)是Simula,理論上比較完善的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言是 Eiffel,導(dǎo)致面向?qū)ο蟪绦蛟O(shè)計(jì)興起的語(yǔ)言及程序設(shè)計(jì)環(huán)境是Smalltalk,而在Internet上最有前途的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言是( )。
2.指向基類的對(duì)象的指針變量也可以指向( )的對(duì)象。
3.類的省卻的繼承訪問(wèn)控制是( )。
4.字符串類型的變量一般由( )和( )類型的變量表示。
5.類用作數(shù)據(jù)封裝機(jī)制,它將相關(guān)的數(shù)據(jù)以及作用在這些數(shù)據(jù)上的操作組織在一起,實(shí)現(xiàn)了( ) .
6.類用作類型定義機(jī)制,它可用于聲明對(duì)象和進(jìn)行類型檢查,還允許用戶通過(guò)( )機(jī)制定義子類型。
7.在函數(shù)定義或說(shuō)明時(shí),具有缺省值的形式參數(shù)稱為( ) .
8.( ) 語(yǔ)句中斷并結(jié)束循環(huán)語(yǔ)句?
9.符號(hào)常量是指定義了值的 ( ) .
10.面向?qū)ο蟪绦蛑校瑢?shí)體的狀態(tài)由( )表示,其行為由( )表示。
二、單項(xiàng)選擇題(在每小題的備選答案中選出一個(gè)正確的答案,并將正確答案的號(hào)碼寫在答卷相應(yīng)的位置上。每小題1分,共10分)
11.cout是I0流庫(kù)預(yù)定義的
A 類B 對(duì)象C 包含文件D 常量
12.繼承機(jī)制的作用是
A 信息隱藏B 數(shù)據(jù)封裝C 定義新類D數(shù)據(jù)抽象
13.類的定義如下,試問(wèn)類B的對(duì)象占據(jù)內(nèi)存多少宇節(jié)空間
class A {int b; protected: int a; public: A(int n){a=n;};};
class B: public A {int c;};
A 2B 3C 4D 6
14.一段程序的定義如下,在函數(shù)f()中將動(dòng)態(tài)對(duì)象的成員n的值改為34的語(yǔ)句應(yīng)該為
class A {
int n;
public:setn(int nl) {n=nl;}
A(int x) {n = x; } }
int f() {A * ptr = new A(45);…… }
AA(34);Bptr.setn(34);Cptr->setn(34);Dsetn(34);
15.類的析構(gòu)函數(shù)的作用是
A 一般成員函數(shù)B 類的初始化C 對(duì)象的初始化D 刪除對(duì)象創(chuàng)建的所有對(duì)象
16.類的析構(gòu)函數(shù)是在什么時(shí)間被自動(dòng)調(diào)用的
A 類創(chuàng)建時(shí)B 創(chuàng)建對(duì)象時(shí)C 刪除對(duì)象時(shí)D不自動(dòng)調(diào)用
17.下面哪個(gè)是正確的遞歸函數(shù),它保證對(duì)所有的參數(shù)能夠結(jié)束
Aint f(int n) {if(n
B int f(int n) {if(n>l) return 1; else return n*f(n-l); }
C int f(int n) {if(abs(n)
D int f(int n) {if(n>l) return 1; else return n*f(n*2); }
18.求解問(wèn)題的一般方法有
A 結(jié)構(gòu)化方法B 求精算法和精美算法C 模塊方法D 過(guò)程化方法
19.-1在計(jì)算杭內(nèi)的存儲(chǔ)形式是
A 0xFFFFB 1111111111111110C 1000 0000 0000 0001 D 0000 0000 0000 0001
20.下列常量中,哪個(gè)的類型為float類型
A 2.FB .2LC 0.2E100D0.0
三、名詞解釋題(每小題z分,共10分)
21.變量
22.內(nèi)部變量
23.賦值運(yùn)算的類型兼容性
24.拷貝構(gòu)造函數(shù)
25.實(shí)例化
四、改錯(cuò)題(每小題1分,共10分)
26.要求下面循環(huán)體中的語(yǔ)句x+=3執(zhí)行30次,請(qǐng)改正程序。
for(j=0; j<90; j++)if(j/3=0) x+=3;
27.下面的函數(shù)求一個(gè)無(wú)負(fù)號(hào)數(shù)的2倍值,請(qǐng)?jiān)撜e(cuò)誤。
unsigned times(unsigned n) {return n;}
28.指出程序段中的錯(cuò)誤: for(k=l,k
29.以下語(yǔ)句是合法的C++語(yǔ)言語(yǔ)句嗎不合法的又錯(cuò)在哪里
if (x > 0) then x =x + 1; else x - x - 1;
30.改正函數(shù)原型static int calc_middle(x, y, z);
31.下列的類聲明程序片段是否有語(yǔ)法錯(cuò)誤,如有請(qǐng)?jiān)撜?:
class FIGURE {PUBLIC:
figure();
FIGURE();
~FIGURE (int have_drawed);};
32.設(shè)有如下的程序片段,是否有錯(cuò)誤,如有錯(cuò)誤請(qǐng)?jiān)撜?BR> class PRINTER (
unsigned char flag;
int print_page() (……);
public:
PR INTER (unsigned char fig) {……};
int print_file () {……};};
int main() {PRINTER LQ_1600K(0x3F8, ‘\0’);
LQ-1600K.print-page 0;}
33. 請(qǐng)指出程序片段的語(yǔ)法錯(cuò)誤。
int * age_ptr;
int m = 3;
*age_ptr = &m;
34.請(qǐng)指出程序片段的語(yǔ)法錯(cuò)誤。
int* salary_ptr;
float* work_hours_ptr;
salary_ptr = work_hours_ptr;
35.指出下面程序中的錯(cuò)誤。
#include
#include
class PERSON {public:
PERSON(char *name) { int len;
len = strlen (name);
PERSON::name = new char[len+1];
strcpy(PERSON:: name, name);}
~PERSON () { delete name; }
char* get_name () {return name; )
protected:char *name;};
class STUDENT: PERSON {public:
void STUDENT (char *st_name, int score): score (score)
{ int len;len = strlen(st_name);
name = new char[len+l];
strcpy(name, st_name);}
int get_score () { return score; )
protected:
int score = 100;
{;int main () {STUDENT soft(“Zhao”。 80);
cout 《“Student:” 《 soft.get_name ();
cout 《“Score: ” 《soft.score 《“。\n”;
return 0;}
五、簡(jiǎn)答題(每小題3分,共15分)
36.試說(shuō)明實(shí)體與程序之間的關(guān)系。
37. C++是如何實(shí)現(xiàn)數(shù)據(jù)封裝和信息隱藏的
38. 舉例說(shuō)明如何動(dòng)態(tài)創(chuàng)建對(duì)象和刪除對(duì)象
39. 什么是父類型什么是子類型
40. 什么是函數(shù)重載
六、程序理解題(每小題4分,共20分)
41. 給出下面程序的輸出。
#include
int main() {const int max_number = 10;
int index;
int find_one, find_two;
int array [max_number] ={20, 12, 32, 13, 19, 41, 10, 61, 23. 57};
find_one = array ;
find_two = array ;
for (index = 0; index < max_number; index =index + 1) {if (array[index] < find_one) find_one = array [index];if (array[index] > find_two) find_two = array [index];}
cout 《 “\n0k, find_one =” 《find_one 《“, find_two =” 《find_two;
return 1;}
42.請(qǐng)給出下面程序的輸出結(jié)果。
#include
const unsigned long MEGA_BYTE = (unsigned long)1024 *1024;
class COMPUTER {public:
COMPUTER (unsigned long m_size, unsigned long h_size, int CD_speed)
{memory_size = m_size;
hard_disk_size = h_size;
CD_ROM_speed = CD_speed;
if (memory_size > (unsigned long)16 * MEGA_BYTE) {cout 《 “\nYou should install Windows 95!”;} else {cout 《 “\nYou can only install Windows 3.1!”;}
if (hard_disk_size > (unsigned long)800 * MEGA_BYTE) {cout 《 “\nYou can install Visual C++ 4.0!”;} else {cout 《 “\nYou can only install Borland C++ 4.5!”;}
if (CD_ROM_speed > 4) cout 《 “\nYou can see Video CD!”;
else cout 《 “\nYou can only listen Audio CD!”;
}
~COMPUTER () { cout 《 “\nYou should make good use of your computer!”; }
1.面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的先驅(qū)是Simula,理論上比較完善的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言是 Eiffel,導(dǎo)致面向?qū)ο蟪绦蛟O(shè)計(jì)興起的語(yǔ)言及程序設(shè)計(jì)環(huán)境是Smalltalk,而在Internet上最有前途的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言是( )。
2.指向基類的對(duì)象的指針變量也可以指向( )的對(duì)象。
3.類的省卻的繼承訪問(wèn)控制是( )。
4.字符串類型的變量一般由( )和( )類型的變量表示。
5.類用作數(shù)據(jù)封裝機(jī)制,它將相關(guān)的數(shù)據(jù)以及作用在這些數(shù)據(jù)上的操作組織在一起,實(shí)現(xiàn)了( ) .
6.類用作類型定義機(jī)制,它可用于聲明對(duì)象和進(jìn)行類型檢查,還允許用戶通過(guò)( )機(jī)制定義子類型。
7.在函數(shù)定義或說(shuō)明時(shí),具有缺省值的形式參數(shù)稱為( ) .
8.( ) 語(yǔ)句中斷并結(jié)束循環(huán)語(yǔ)句?
9.符號(hào)常量是指定義了值的 ( ) .
10.面向?qū)ο蟪绦蛑校瑢?shí)體的狀態(tài)由( )表示,其行為由( )表示。
二、單項(xiàng)選擇題(在每小題的備選答案中選出一個(gè)正確的答案,并將正確答案的號(hào)碼寫在答卷相應(yīng)的位置上。每小題1分,共10分)
11.cout是I0流庫(kù)預(yù)定義的
A 類B 對(duì)象C 包含文件D 常量
12.繼承機(jī)制的作用是
A 信息隱藏B 數(shù)據(jù)封裝C 定義新類D數(shù)據(jù)抽象
13.類的定義如下,試問(wèn)類B的對(duì)象占據(jù)內(nèi)存多少宇節(jié)空間
class A {int b; protected: int a; public: A(int n){a=n;};};
class B: public A {int c;};
A 2B 3C 4D 6
14.一段程序的定義如下,在函數(shù)f()中將動(dòng)態(tài)對(duì)象的成員n的值改為34的語(yǔ)句應(yīng)該為
class A {
int n;
public:setn(int nl) {n=nl;}
A(int x) {n = x; } }
int f() {A * ptr = new A(45);…… }
AA(34);Bptr.setn(34);Cptr->setn(34);Dsetn(34);
15.類的析構(gòu)函數(shù)的作用是
A 一般成員函數(shù)B 類的初始化C 對(duì)象的初始化D 刪除對(duì)象創(chuàng)建的所有對(duì)象
16.類的析構(gòu)函數(shù)是在什么時(shí)間被自動(dòng)調(diào)用的
A 類創(chuàng)建時(shí)B 創(chuàng)建對(duì)象時(shí)C 刪除對(duì)象時(shí)D不自動(dòng)調(diào)用
17.下面哪個(gè)是正確的遞歸函數(shù),它保證對(duì)所有的參數(shù)能夠結(jié)束
Aint f(int n) {if(n
B int f(int n) {if(n>l) return 1; else return n*f(n-l); }
C int f(int n) {if(abs(n)
D int f(int n) {if(n>l) return 1; else return n*f(n*2); }
18.求解問(wèn)題的一般方法有
A 結(jié)構(gòu)化方法B 求精算法和精美算法C 模塊方法D 過(guò)程化方法
19.-1在計(jì)算杭內(nèi)的存儲(chǔ)形式是
A 0xFFFFB 1111111111111110C 1000 0000 0000 0001 D 0000 0000 0000 0001
20.下列常量中,哪個(gè)的類型為float類型
A 2.FB .2LC 0.2E100D0.0
三、名詞解釋題(每小題z分,共10分)
21.變量
22.內(nèi)部變量
23.賦值運(yùn)算的類型兼容性
24.拷貝構(gòu)造函數(shù)
25.實(shí)例化
四、改錯(cuò)題(每小題1分,共10分)
26.要求下面循環(huán)體中的語(yǔ)句x+=3執(zhí)行30次,請(qǐng)改正程序。
for(j=0; j<90; j++)if(j/3=0) x+=3;
27.下面的函數(shù)求一個(gè)無(wú)負(fù)號(hào)數(shù)的2倍值,請(qǐng)?jiān)撜e(cuò)誤。
unsigned times(unsigned n) {return n;}
28.指出程序段中的錯(cuò)誤: for(k=l,k
29.以下語(yǔ)句是合法的C++語(yǔ)言語(yǔ)句嗎不合法的又錯(cuò)在哪里
if (x > 0) then x =x + 1; else x - x - 1;
30.改正函數(shù)原型static int calc_middle(x, y, z);
31.下列的類聲明程序片段是否有語(yǔ)法錯(cuò)誤,如有請(qǐng)?jiān)撜?:
class FIGURE {PUBLIC:
figure();
FIGURE();
~FIGURE (int have_drawed);};
32.設(shè)有如下的程序片段,是否有錯(cuò)誤,如有錯(cuò)誤請(qǐng)?jiān)撜?BR> class PRINTER (
unsigned char flag;
int print_page() (……);
public:
PR INTER (unsigned char fig) {……};
int print_file () {……};};
int main() {PRINTER LQ_1600K(0x3F8, ‘\0’);
LQ-1600K.print-page 0;}
33. 請(qǐng)指出程序片段的語(yǔ)法錯(cuò)誤。
int * age_ptr;
int m = 3;
*age_ptr = &m;
34.請(qǐng)指出程序片段的語(yǔ)法錯(cuò)誤。
int* salary_ptr;
float* work_hours_ptr;
salary_ptr = work_hours_ptr;
35.指出下面程序中的錯(cuò)誤。
#include
#include
class PERSON {public:
PERSON(char *name) { int len;
len = strlen (name);
PERSON::name = new char[len+1];
strcpy(PERSON:: name, name);}
~PERSON () { delete name; }
char* get_name () {return name; )
protected:char *name;};
class STUDENT: PERSON {public:
void STUDENT (char *st_name, int score): score (score)
{ int len;len = strlen(st_name);
name = new char[len+l];
strcpy(name, st_name);}
int get_score () { return score; )
protected:
int score = 100;
{;int main () {STUDENT soft(“Zhao”。 80);
cout 《“Student:” 《 soft.get_name ();
cout 《“Score: ” 《soft.score 《“。\n”;
return 0;}
五、簡(jiǎn)答題(每小題3分,共15分)
36.試說(shuō)明實(shí)體與程序之間的關(guān)系。
37. C++是如何實(shí)現(xiàn)數(shù)據(jù)封裝和信息隱藏的
38. 舉例說(shuō)明如何動(dòng)態(tài)創(chuàng)建對(duì)象和刪除對(duì)象
39. 什么是父類型什么是子類型
40. 什么是函數(shù)重載
六、程序理解題(每小題4分,共20分)
41. 給出下面程序的輸出。
#include
int main() {const int max_number = 10;
int index;
int find_one, find_two;
int array [max_number] ={20, 12, 32, 13, 19, 41, 10, 61, 23. 57};
find_one = array ;
find_two = array ;
for (index = 0; index < max_number; index =index + 1) {if (array[index] < find_one) find_one = array [index];if (array[index] > find_two) find_two = array [index];}
cout 《 “\n0k, find_one =” 《find_one 《“, find_two =” 《find_two;
return 1;}
42.請(qǐng)給出下面程序的輸出結(jié)果。
#include
const unsigned long MEGA_BYTE = (unsigned long)1024 *1024;
class COMPUTER {public:
COMPUTER (unsigned long m_size, unsigned long h_size, int CD_speed)
{memory_size = m_size;
hard_disk_size = h_size;
CD_ROM_speed = CD_speed;
if (memory_size > (unsigned long)16 * MEGA_BYTE) {cout 《 “\nYou should install Windows 95!”;} else {cout 《 “\nYou can only install Windows 3.1!”;}
if (hard_disk_size > (unsigned long)800 * MEGA_BYTE) {cout 《 “\nYou can install Visual C++ 4.0!”;} else {cout 《 “\nYou can only install Borland C++ 4.5!”;}
if (CD_ROM_speed > 4) cout 《 “\nYou can see Video CD!”;
else cout 《 “\nYou can only listen Audio CD!”;
}
~COMPUTER () { cout 《 “\nYou should make good use of your computer!”; }