1[單選題]下列敘述中正確的是( )。
A.算法的效率只與問題的規(guī)模有關,而與數據的存儲結構無關
B.算法的時間復雜度是指執(zhí)行算法所需要的計算工作量
C.數據的邏輯結構與存儲結構是一一對應的
D.算法的時間復雜度與空間復雜度一定相關
參考答案:B
2[判斷題]C++語言比C語言對數據類型要求更加嚴格了。
參考答案:對
3[單選題]下面選項中不屬于面向對象程序設計特征的是( )。
A.繼承性 B.多態(tài)性 C.類比性 D.封裝性
參考答案:C
4[單選題]下列關于數據庫設計的敘述中,正確的是( )。
A.在需求分析階段建立數據字典
B.在概念設計階段建立數據字典
C.在邏輯設計階段建立數據字典
D.在物理設計階段建立數據字典
參考答案:A
參考解析:數據庫設計目前一般采用生命周期法,即將整個數據庫應用系統的開發(fā)分解成日標獨立的若干階段。分別是:需求分析階段、概念設計階段、邏輯設計階段、物理設計階段、編碼階段、測試階段、運行階段、進一步修改階段。數據字典是對系統中數據的詳盡描述,是各類數據屬性的清單。對數據設計來講,數據字典是進行洋細的數據收集和數據分析所獲得的主要結果。
5[單選題]下列敘述中正確的是( )。
A.用E-R圖能夠表示實體集之間一對一的聯系、一對多的聯系、多對多的聯系
B.用E-R圖只能表示實體集之間一對一的聯系
C.用E-R圖只能表示實體集之間一對多的聯系
D.用E-R圖表示的概念數據模型只能轉換為關系數據模型
參考答案:A
參考解析:用E-R圖可以簡單明了地描述實體及其相互之間的聯系,用E-R圖還可以方便地描述多個實體集之間的聯系和一個實體集內部實體之間的聯系。因此,選項A中的說法是正確的, 而選項B與C中的說法都是錯誤的。 為了建立用戶所要求的數據庫.必須把概念結構(用E-R圖表示的概念數據模型)轉換為某個具體的數據庫管理系統所支持的數據模型.這就是邏輯結構設計所要完成的任務。在已給定數據庫管理系統的情況下,數據庫的邏輯設計可以分兩步來進行: ①將概念模型轉換成一般的數據模型; ②將一般的數據模型轉換為特定的數據庫管理系統所支持的數據模型。 由此可知,用E-R圖表示的概念數據模型不僅能轉換為關系數據模型,還可以轉換為其他數據模型,如網狀模型和層次模型等。因此,選項D中的說法也是錯誤的。
6[單選題]下列數據結構中,屬于非線性結構的是( )。
A.循環(huán)隊列B.帶鏈隊列C.二叉樹D.帶鏈棧
參考答案:C
參考解析:隊列是一種允許在一端進行插入,而在另一端進行刪除的線性表。棧也是一種特殊的線性表,其插入與刪除只能在線性表的一端進行。
7[單選題] c++語言類體系中,不能被派生類繼承的有( )。
A.轉換函數B.構造函數C.虛函數D.靜態(tài)成員函數
參考答案:B
參考解析:派生類對象的數據結構是由基類中說明的數據成員和派生類中說明的數據成員共同構成,所以不能繼承基類的構造函數,必須重新定義。
8[單選題] 在軟件設計中,不屬于過程設計工具的是( )。
A.PDL(過程設計語言)B.PAD圖C.N-S圖D.DVD圖
參考答案:D
參考解析:PDL是過程設計語言(ProcedureDesignLanguage)的簡寫,也稱程序描述語言,是硐于描述模塊算法設計和處理細節(jié)的語言;N-S圖是編程過程中常用的一種分析工具,提出了最初分析問題方法;PAD是問題分析圈(ProblemAnalysisDiagram)的簡寫,它用二維樹型結構的圖表示程序的控制流,將這種圖轉換為程序代碼比較容易;DFD(數據流圖)是描述數據處理過程的工具。
9[單選題] 下面不正確的描述為( )。
A.調用函數時,實參可以是表達式
B.調用函數時,實參與形參可以共用內存單元
C.調用函數時,將為形參分配內存單元
D.調用函數時,實參與形參的類型必須一致
參考答案:B
參考解析:函數調用時用實參替換形參,如果實參為表達式,將為表達武的值創(chuàng)建一個臨時對象,然后將該實參替換形參。替換的實質是變量間的復制,當然這種復制需要為形參分配內存。需要注意的是:形參在編澤時不分配內存,在運行時才分配內存。
10[單選題] 有如下程序:
#include
#includediomanip>
usingnamespacestd;
intmain( ){
ints[]={123,234);
cout<
for(inti=0;i<2;i++){cout<
return0;
}
運行時的輸出結果是( )。
A.123B.***123
234234C.***123D.***123
***234234***
參考答案:B
參考解析:setw()為填充字符控制,僅對緊接著它的字符起作用,當輸出的字符寬度小于setw()預留的字符數時,需用setw()設置的字符給予填充。
11[填空題]C++語言具有面向對象方法中要求的三大特性: ( ) 、 ( ) 和 ( ) 。
參考解析:封裝性 、 繼承性 和 多態(tài)性 。
12[簡答題]指出下列數據中哪些可作為C++的合法常數?
(a) 588918 (b) 0129 (c) 0x88a (d) e-5 (e) ″A″
(f) .55 (g) ’\\’ (h) 0XCD (i) 8E7 (j) π
參考解析:(a)、(c)(e)、(f)、(g)、(h)、(i)
13[單選題] 有如下程序:
#include
usingnamespacestd;
classA
{
public:
A(){cout<<"A";}
~A(){cout<<"~A";}
};
classB
{
A*P:
public:
B(){cout<<"B";p=newA;}
~B(){cout<<"~B";deleteP;}
};
intmain()
{
Bobi;
return0;
}
執(zhí)行這個程序的輸出結果是( )。
A.BAA~A~B~AB.ABA~B~A~AC.BAA~B~A~AD.ABA~A~B~A
參考答案:B
參考解析:本題考查的是類的構造函數和析構函數。派生類構造函數的執(zhí)行順序:首先調用基類的構造函數,調用順序按它們被繼承時說明的順序;然后調用子對象的構造函數,調用順序按它們在類中說明的順序;最后是派生類構造函數中的內容。因此本題中,首先調用基類構造函數輸出A,然后調用子對象的構造函數輸出B,P=newA再調用類A的構造函數輸出A。析構函數的調用順序和構造函數的調用順序相反。
14[單選題]開發(fā)軟件時對提高開發(fā)人員工作效率至關重要的是
A.操作系統的資源管理功能
B.先進的軟件開發(fā)工具和環(huán)境
C.程序人員的數量
D.計算機的并行處理能力
參考答案:B
15[單選題] 下列關于模板形參的描述中,錯誤的是( )。
A.模板形參表必須在關鍵字template之后
B.模板形參表必須用括弧( )括起來
C.可以用class修飾模板形參
D.可以用typename修飾模板形參
參考答案:B
參考解析:主要考查函數模板的定義。聲明一個函數模板的格式為“template<<模板形參表聲明>><函數聲明>”,其中<模板形參>具有typename<參數名>、class<參數名>、<類型修飾><參數名>三種形式,形參用“<>”括起來。
17[單選題] 有下列程序:
#include
voidmain( )
{inta=1,b=2,c=3,d=0;
if(a==1&&b++==2)
if(b!=2‖c--!=3)
printf("%d,%d,%d\n",a,b,c);
elseprintf("%d,%d,%d\n",a,b,c);
elseprintf("%d,%d,%d,%d\n",a,b,c);
}
程序運行后的輸出結果是( )。
A.1,2,3B.1,3,2C.1,3,3D.3,2,1
參考答案:C
參考解析:在程序中,當執(zhí)行第一條if語句時,進行邏輯語句的判斷,因為變量b的初值為2,所以其值加1后為3,與2不相等,所以if語句中的邏輯表達式的值為假,則程序執(zhí)行最后一條elseprintf語句。輸出變量為a,b,c,當前數值為1,3,3。所以正確答案為選項C。
18[簡答題]請使用VC6或使用【答題】菜單打開考生文件夾pr092下的工程pros2。此工程中包含一個程序文件main.cpp,其中有“部門”類Department和“職工”類Staff的定義,還有主函數main的定義。在主函數中定義了兩個“職工”對象,他們屬于同一部門。程序展示,當該部門改換辦公室后,這兩個人的辦公室也同時得到改變。請在程序中的橫線處填寫適當的代碼并刪除橫線,以實現上述類定義。此程序的正確輸出結果應為:
改換辦公室前:
職工號:0789姓名:張三部門:人事處辦公室:521
職工號:0513姓名:李四部門:人事處辦公室:521
改換辦公室后:
職工號:0789姓名:張三部門:人事處辦公室:311
職工號:0513姓名:李四部門:人事處辦公室:311
注意:只在橫線處填寫適當的代碼,不要改動程序中的其他內容,也不要刪除或移動“//****found****”。
#include
using namespace std;
class Department{ //“部門”類
public:
Department(const char*name,const char*office){
strcpy(this一>name,nanle);
//**********found**********
}
const char*getName()const{return name;}//返回部門名稱
//**********found**********
const char*getOffice()const{________} //返回辦公室房號
void changeOfficeTo(const char*office){ //改換為指定房號的另一個辦公室
strcpy(this一>office,office);
}
private:
char name[20];//部門名稱
char office[20];//部門所在辦公室房號
};
class staff{//“職工”類
public:
//**********found**********
Staff(const char*my—id,const char木my_name,Department&my_dept):——{
strcpy(this一>staff id,my_id);
strcpy(this一>name,my_name);
}
const char*getlD()const{return staff_id;}
const char*getName()consl{return name;}
Department getDepartment()const{return dept;} char staff=id[10];//職工號
char name[20];//姓名
Department&dept;//所在部門
}; void showStaff(Staff&staff){
cout<<”職工號:”<
cout<<”姓名:”<
A.算法的效率只與問題的規(guī)模有關,而與數據的存儲結構無關
B.算法的時間復雜度是指執(zhí)行算法所需要的計算工作量
C.數據的邏輯結構與存儲結構是一一對應的
D.算法的時間復雜度與空間復雜度一定相關
參考答案:B
2[判斷題]C++語言比C語言對數據類型要求更加嚴格了。
參考答案:對
3[單選題]下面選項中不屬于面向對象程序設計特征的是( )。
A.繼承性 B.多態(tài)性 C.類比性 D.封裝性
參考答案:C
4[單選題]下列關于數據庫設計的敘述中,正確的是( )。
A.在需求分析階段建立數據字典
B.在概念設計階段建立數據字典
C.在邏輯設計階段建立數據字典
D.在物理設計階段建立數據字典
參考答案:A
參考解析:數據庫設計目前一般采用生命周期法,即將整個數據庫應用系統的開發(fā)分解成日標獨立的若干階段。分別是:需求分析階段、概念設計階段、邏輯設計階段、物理設計階段、編碼階段、測試階段、運行階段、進一步修改階段。數據字典是對系統中數據的詳盡描述,是各類數據屬性的清單。對數據設計來講,數據字典是進行洋細的數據收集和數據分析所獲得的主要結果。
5[單選題]下列敘述中正確的是( )。
A.用E-R圖能夠表示實體集之間一對一的聯系、一對多的聯系、多對多的聯系
B.用E-R圖只能表示實體集之間一對一的聯系
C.用E-R圖只能表示實體集之間一對多的聯系
D.用E-R圖表示的概念數據模型只能轉換為關系數據模型
參考答案:A
參考解析:用E-R圖可以簡單明了地描述實體及其相互之間的聯系,用E-R圖還可以方便地描述多個實體集之間的聯系和一個實體集內部實體之間的聯系。因此,選項A中的說法是正確的, 而選項B與C中的說法都是錯誤的。 為了建立用戶所要求的數據庫.必須把概念結構(用E-R圖表示的概念數據模型)轉換為某個具體的數據庫管理系統所支持的數據模型.這就是邏輯結構設計所要完成的任務。在已給定數據庫管理系統的情況下,數據庫的邏輯設計可以分兩步來進行: ①將概念模型轉換成一般的數據模型; ②將一般的數據模型轉換為特定的數據庫管理系統所支持的數據模型。 由此可知,用E-R圖表示的概念數據模型不僅能轉換為關系數據模型,還可以轉換為其他數據模型,如網狀模型和層次模型等。因此,選項D中的說法也是錯誤的。
6[單選題]下列數據結構中,屬于非線性結構的是( )。
A.循環(huán)隊列B.帶鏈隊列C.二叉樹D.帶鏈棧
參考答案:C
參考解析:隊列是一種允許在一端進行插入,而在另一端進行刪除的線性表。棧也是一種特殊的線性表,其插入與刪除只能在線性表的一端進行。
7[單選題] c++語言類體系中,不能被派生類繼承的有( )。
A.轉換函數B.構造函數C.虛函數D.靜態(tài)成員函數
參考答案:B
參考解析:派生類對象的數據結構是由基類中說明的數據成員和派生類中說明的數據成員共同構成,所以不能繼承基類的構造函數,必須重新定義。
8[單選題] 在軟件設計中,不屬于過程設計工具的是( )。
A.PDL(過程設計語言)B.PAD圖C.N-S圖D.DVD圖
參考答案:D
參考解析:PDL是過程設計語言(ProcedureDesignLanguage)的簡寫,也稱程序描述語言,是硐于描述模塊算法設計和處理細節(jié)的語言;N-S圖是編程過程中常用的一種分析工具,提出了最初分析問題方法;PAD是問題分析圈(ProblemAnalysisDiagram)的簡寫,它用二維樹型結構的圖表示程序的控制流,將這種圖轉換為程序代碼比較容易;DFD(數據流圖)是描述數據處理過程的工具。
9[單選題] 下面不正確的描述為( )。
A.調用函數時,實參可以是表達式
B.調用函數時,實參與形參可以共用內存單元
C.調用函數時,將為形參分配內存單元
D.調用函數時,實參與形參的類型必須一致
參考答案:B
參考解析:函數調用時用實參替換形參,如果實參為表達式,將為表達武的值創(chuàng)建一個臨時對象,然后將該實參替換形參。替換的實質是變量間的復制,當然這種復制需要為形參分配內存。需要注意的是:形參在編澤時不分配內存,在運行時才分配內存。
10[單選題] 有如下程序:
#include
#includediomanip>
usingnamespacestd;
intmain( ){
ints[]={123,234);
cout<
for(inti=0;i<2;i++){cout<
return0;
}
運行時的輸出結果是( )。
A.123B.***123
234234C.***123D.***123
***234234***
參考答案:B
參考解析:setw()為填充字符控制,僅對緊接著它的字符起作用,當輸出的字符寬度小于setw()預留的字符數時,需用setw()設置的字符給予填充。
11[填空題]C++語言具有面向對象方法中要求的三大特性: ( ) 、 ( ) 和 ( ) 。
參考解析:封裝性 、 繼承性 和 多態(tài)性 。
12[簡答題]指出下列數據中哪些可作為C++的合法常數?
(a) 588918 (b) 0129 (c) 0x88a (d) e-5 (e) ″A″
(f) .55 (g) ’\\’ (h) 0XCD (i) 8E7 (j) π
參考解析:(a)、(c)(e)、(f)、(g)、(h)、(i)
13[單選題] 有如下程序:
#include
usingnamespacestd;
classA
{
public:
A(){cout<<"A";}
~A(){cout<<"~A";}
};
classB
{
A*P:
public:
B(){cout<<"B";p=newA;}
~B(){cout<<"~B";deleteP;}
};
intmain()
{
Bobi;
return0;
}
執(zhí)行這個程序的輸出結果是( )。
A.BAA~A~B~AB.ABA~B~A~AC.BAA~B~A~AD.ABA~A~B~A
參考答案:B
參考解析:本題考查的是類的構造函數和析構函數。派生類構造函數的執(zhí)行順序:首先調用基類的構造函數,調用順序按它們被繼承時說明的順序;然后調用子對象的構造函數,調用順序按它們在類中說明的順序;最后是派生類構造函數中的內容。因此本題中,首先調用基類構造函數輸出A,然后調用子對象的構造函數輸出B,P=newA再調用類A的構造函數輸出A。析構函數的調用順序和構造函數的調用順序相反。
14[單選題]開發(fā)軟件時對提高開發(fā)人員工作效率至關重要的是
A.操作系統的資源管理功能
B.先進的軟件開發(fā)工具和環(huán)境
C.程序人員的數量
D.計算機的并行處理能力
參考答案:B
15[單選題] 下列關于模板形參的描述中,錯誤的是( )。
A.模板形參表必須在關鍵字template之后
B.模板形參表必須用括弧( )括起來
C.可以用class修飾模板形參
D.可以用typename修飾模板形參
參考答案:B
參考解析:主要考查函數模板的定義。聲明一個函數模板的格式為“template<<模板形參表聲明>><函數聲明>”,其中<模板形參>具有typename<參數名>、class<參數名>、<類型修飾><參數名>三種形式,形參用“<>”括起來。
17[單選題] 有下列程序:
#include
voidmain( )
{inta=1,b=2,c=3,d=0;
if(a==1&&b++==2)
if(b!=2‖c--!=3)
printf("%d,%d,%d\n",a,b,c);
elseprintf("%d,%d,%d\n",a,b,c);
elseprintf("%d,%d,%d,%d\n",a,b,c);
}
程序運行后的輸出結果是( )。
A.1,2,3B.1,3,2C.1,3,3D.3,2,1
參考答案:C
參考解析:在程序中,當執(zhí)行第一條if語句時,進行邏輯語句的判斷,因為變量b的初值為2,所以其值加1后為3,與2不相等,所以if語句中的邏輯表達式的值為假,則程序執(zhí)行最后一條elseprintf語句。輸出變量為a,b,c,當前數值為1,3,3。所以正確答案為選項C。
18[簡答題]請使用VC6或使用【答題】菜單打開考生文件夾pr092下的工程pros2。此工程中包含一個程序文件main.cpp,其中有“部門”類Department和“職工”類Staff的定義,還有主函數main的定義。在主函數中定義了兩個“職工”對象,他們屬于同一部門。程序展示,當該部門改換辦公室后,這兩個人的辦公室也同時得到改變。請在程序中的橫線處填寫適當的代碼并刪除橫線,以實現上述類定義。此程序的正確輸出結果應為:
改換辦公室前:
職工號:0789姓名:張三部門:人事處辦公室:521
職工號:0513姓名:李四部門:人事處辦公室:521
改換辦公室后:
職工號:0789姓名:張三部門:人事處辦公室:311
職工號:0513姓名:李四部門:人事處辦公室:311
注意:只在橫線處填寫適當的代碼,不要改動程序中的其他內容,也不要刪除或移動“//****found****”。
#include
using namespace std;
class Department{ //“部門”類
public:
Department(const char*name,const char*office){
strcpy(this一>name,nanle);
//**********found**********
}
const char*getName()const{return name;}//返回部門名稱
//**********found**********
const char*getOffice()const{________} //返回辦公室房號
void changeOfficeTo(const char*office){ //改換為指定房號的另一個辦公室
strcpy(this一>office,office);
}
private:
char name[20];//部門名稱
char office[20];//部門所在辦公室房號
};
class staff{//“職工”類
public:
//**********found**********
Staff(const char*my—id,const char木my_name,Department&my_dept):——{
strcpy(this一>staff id,my_id);
strcpy(this一>name,my_name);
}
const char*getlD()const{return staff_id;}
const char*getName()consl{return name;}
Department getDepartment()const{return dept;} char staff=id[10];//職工號
char name[20];//姓名
Department&dept;//所在部門
}; void showStaff(Staff&staff){
cout<<”職工號:”<
cout<<”姓名:”<