為大家收集整理了《2014計算機等級二級C++模擬試題及答案》供大家參考,希望對大家有所幫助?。?!
一、選擇題(每小題1分,共40分)1關(guān)于運算符重載,下列表述中正確的是( )。A. c++已有的任何運算符都可以重載B. 運算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型C. 在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型D. 可以通過運算符重載來創(chuàng)建c++中原來沒有的運算符
本題共1分,參考答案:C解析:重載運算符的規(guī)則如下:①c++不允許用戶自己定義新的運算符,只能對已有的c++運算符進行重載;②c++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應(yīng)有一個是類對象,即不允許參數(shù)全部是c++的標(biāo)準類型。故本題答案為c。
2在類的定義中,用于為對象分配內(nèi)存空間,對類的數(shù)據(jù)成員進行初始化并執(zhí)行其他內(nèi)部管理操作的函數(shù)是( )。 A. 友元函數(shù)B. 虛函數(shù)C. 構(gòu)造函數(shù)D. 析構(gòu)函數(shù)
本題共1分,參考答案:C解析:構(gòu)造函數(shù)在創(chuàng)建對象時系統(tǒng)自動調(diào)用,其功能是使用給定的值將對象初始化。
3軟件設(shè)計中模塊劃分應(yīng)遵循的準則是( )。 A. 低內(nèi)聚低耦合B. 高內(nèi)聚低耦合C. 低內(nèi)聚高耦合D. 高內(nèi)聚高耦合
本題共1分,參考答案:B解析:軟件沒計中模塊劃分應(yīng)遵循的準則是高內(nèi)聚低偶合、模塊大小規(guī)模適當(dāng)、模塊的依賴關(guān)系適當(dāng)?shù)取DK的劃分應(yīng)遵循一定的要求,以保證模塊劃分合理,并進一步保證以此為依據(jù)開發(fā)出的軟件系統(tǒng)可靠性強,易于理解和維護。模塊之間的耦合應(yīng)盡可能的低,模塊的內(nèi)聚度應(yīng)盡町能的高。
4如果類A被說明成類B的友元,則( )。 A. 類A的成員即類B的成員B. 類B的成員即類A的成員C. 類A的成員函數(shù)不得訪問類B的成員D. 類B不一定是類A的友元
本題共1分,參考答案:D解析:本題考查的是友元類的定義:類A為類B的友元類,則類A的所有成員函數(shù)都是類8的友元函數(shù),但反之則不一定成立。
5有如下類定義:
class Foo
{
public:
Foo(int v):value(V){}//①
~Foo(){}//②
private:
Foo(){}//③
int value=0://④
};
其中存在語法錯誤的行是( )。 A. ①B. ②C. ③D. ④
本題共1分,參考答案:D解析:本題考查對象的初始化,類的數(shù)據(jù)成員是不能在聲明類時初始化的,所以本題答案為D。
6下面關(guān)于數(shù)組的描述錯誤的是( )。 A. 在C++語言中數(shù)組的名字就是指向該數(shù)組第一個元素的指針B. 長度為n的數(shù)組,下標(biāo)的范圍是0~n-1C. 數(shù)組的大小必須在編譯時確定D. 數(shù)組只能通過值參數(shù)和引用參數(shù)兩種方式傳遞給函數(shù)
本題共1分,參考答案:D解析:本題考查的是數(shù)組的基本使用,數(shù)組還可以通過對應(yīng)的指針調(diào)用傳遞參數(shù),其余選項的說法都是正確的。
7運算符重載是對已有的運算符賦予多重含義,因此( )。 A. 可以對基本類型(如int類型)的數(shù)據(jù),重新定義“+”運算符的含義B. 可以改變一個已有運算符的優(yōu)先級和操作數(shù)個數(shù)C. 只能重載c++中已經(jīng)有的運算符,不能定義新運算符D. C++中已經(jīng)有的所有運算符都可以重載
本題共1分,參考答案:C解析:重載運算符的規(guī)則如下:①c++不允許用戶自己定義新的運算符,只能對已有的c++運算符進行重載;②c++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應(yīng)有一個是類對象,即不允許參數(shù)全部是c++的標(biāo)準類型。故本題答案為c。
8有如下類和對象的定義:
class Constants{
public:
static double getPI(){return 3.1416;}
};
Constants constants:
下列各組語句中,能輸出3.1416的是( )。 A. cout
本題共1分,參考答案:D解析:本題考查靜態(tài)成員函數(shù)。靜態(tài)成員函數(shù)由于沒有this指針,所以不能訪問本類中的非靜態(tài)成員。引用靜態(tài)成員函數(shù)有2種方式,一種是直接使用類來引用,即Constants::getpI();另一種是使用對象來引用,即constants.getPI()。所以本題答案為D。
9程序流程圖中帶有箭頭的線段表示的是( )。 A. 圖元關(guān)系B. 數(shù)據(jù)流C. 控制流D. 調(diào)用關(guān)系
本題共1分,參考答案:C解析:在數(shù)據(jù)流圖中,用標(biāo)有名字的箭頭表示數(shù)據(jù)流。在程序流程圖中,用標(biāo)有名字的箭頭表示控制流。所以選擇C。
10下列程序的執(zhí)行結(jié)果為( )。
#include
void main()
{
int a=3,b=0;
int*P =&a;
b=+a++;
cout<<*P<<”,”<<< p>
}A. 3,4B. 4,3C. 3,4D. 4,4
本題共1分,參考答案:B解析:*P為所指對象a的值,語句“b=+a++;”等價于“b=b+a;a=a+1;”。
11對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(rt一1)/2的排序方法是( )。 A. 快速排序B. 冒泡排序C. 直接插入排序D. 堆排序
本題共1分,參考答案:D解析:除了堆排序算法的比較次數(shù)是0(nlog2n),其他的都是n(n—1)/2。
12字面常量42、4.2、42L的數(shù)據(jù)類型分別是( )。 A. long,double、intB. lon9、float、intC. int、double、longD. int、float、long
本題共1分,參考答案:C解析:本題考查整型變量的類型和浮點變量的類型,42默認為int型數(shù)據(jù),42后面加上L后,表示long型數(shù)據(jù),4.2默認為double型數(shù)據(jù)。
13下列敘述中正確的是( )。 A. 棧是“先進先出”的線性表B. 隊列是“先進后出”的線性表C. 循環(huán)隊列是非線性結(jié)構(gòu)D. 有序線性表既可以采用順序存儲結(jié)構(gòu),也可以采用鏈式存儲結(jié)構(gòu)
本題共1分,參考答案:D解析:棧是先進后出的線性表,所以A錯誤;隊列是先進先出的線性表,所以B錯誤;循環(huán)隊列是線性結(jié)構(gòu)的線性表,所以C錯誤。
14不能作為重載函數(shù)的調(diào)用的依據(jù)是( )。 A. 參數(shù)個數(shù)B. 參數(shù)類型C. 函數(shù)類型D. 函數(shù)名稱
本題共1分,參考答案:D解析:所謂重載函數(shù)是指同一個函數(shù)名可以對應(yīng)多個函數(shù)的實現(xiàn),編譯器會根據(jù)參數(shù)個數(shù)、參數(shù)類型和函數(shù)返回值類型不同而自動調(diào)用相應(yīng)的函數(shù)。
15下列語句中,錯誤的是( )。 A. const int buffer=256;B. const double*point;C. int const buffer=256;D. double*eonst point:
本題共1分,參考答案:D解析:const是一個C++關(guān)鍵字,用于限定不允許改變的變量。選項B是指向常量的指針,定義時可以不初始化;選項D是指針常量,定義時必須初始化。故答案為D。
16下列運算符中,在c++語言中不能重載的是( )。 A. *B. >=C. ::D. /
本題共1分,參考答案:C解析:不能被重載的運算符還包括:“.”、“.*”、“->*”和“?:”。
17有如下說明:
int a[10]={1,2,3,4,5,6,7,8,9,10},* P=a; 則數(shù)值為9的表達式是( )。 A. *P+9B. 木(P+8)C. *P+=9D. P+8
本題共1分,參考答案:B解析:本題考查指向數(shù)組的指針,本題中指針變量P指向數(shù)組a,那么*P的值就是1,即表示數(shù)組的第一個元素,那么數(shù)值為9的表達式就是將指針向后移動8個地址,即P+8指向的是數(shù)組元素值為9,所以數(shù)值為9的表達式是*(P+8)。
18執(zhí)行下列語句段后,輸出字符“*”的個數(shù)是( )。
for(int i=50;i>1;i-=2)Cout<<'*': A. 24B. 25C. 26D. 50
本題共1分,參考答案:B解析:本題考查for循環(huán)語句,題目中每執(zhí)行完循環(huán)體后,i都會減2.那么只有50到2之間的偶數(shù)才能輸出“*”,所以總共輸出25次。
19算法的有窮性是指( )。 A. 算法程序的運行時間是有限的B. 算法程序所處理的數(shù)據(jù)量是有限的C. 算法程序的長度是有限的D. 算法只能被有限的用戶使用
本題共1分,參考答案:A解析:算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算后即可完成。有窮性是指算法程序的運行時間是有限的。
20下面關(guān)于break語句的描述中,不正確的是( )。 A. break可以用于循環(huán)體內(nèi)B. break語句可以在for循環(huán)語句中出現(xiàn)多次C. break語句可以在switch語句中出現(xiàn)多次D. break語句可用于if條件判斷語句內(nèi)
本題共1分,參考答案:D解析:本題考查的是break語句的使用,break可以結(jié)束switch語句和for循環(huán)語句,但是不能使用在條件判斷語句內(nèi)。
21有如下類定義:
class Point
{
int xx.yy;
public:
Point():xx(0),yy(0){}
Point(int x,int Y=0):xx(X),YY(Y){}
};
若執(zhí)行語句
Point a(2),b[3],幸c[4];
則Point類的構(gòu)造函數(shù)被調(diào)用的次數(shù)是( )。 A. 2次B. 3次C. 4次D. 5次
本題共1分,參考答案:C解析:本題考查默認構(gòu)造函數(shù)和帶參數(shù)的構(gòu)造函數(shù),題目中定義一個對象a(2)以及對象數(shù)組b[3],共執(zhí)行4次構(gòu)造函數(shù),對象指針不調(diào)用構(gòu)造函數(shù)。所以本題答案為c。
22有如下程序:
#include
using namespace std;
class Basel
{
public:
BaseI(int D.{cout<< p>
一Basel(){}
};
class Base2
{
public:
Base2(int D.{tout<< p>
~Base2(){}
};
class Derived:public Basel,Base2
{
public:
Derived(int a,int b,int c,int D.:Basel(B.,Base2(A.,bl(D.,b2(C.{}
private:
int bl:
int b2:
};
int main()
{
Derived d(1,2,3,4);
return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。 A. 1234B. 2134C. 12D. 21
本題共1分,參考答案:D解析:本題考查派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù),在定義一個派生類的對象時,先調(diào)用基類的構(gòu)造函數(shù),然后再執(zhí)行派生類的構(gòu)造函數(shù),對象釋放時,先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù)。本題中定義一個派生類對象時,分別調(diào)用基類的構(gòu)造函數(shù),所以分別輸出21。
23以下敘述正確的是( )。 A. 函數(shù)可以嵌套定義但不能嵌套調(diào)用B. 函數(shù)既可以嵌套調(diào)用也可以嵌套定義C. 函數(shù)既不可以嵌套定義也不可以嵌套調(diào)用D. 函數(shù)可以嵌套調(diào)用但不可以嵌套定義
本題共1分,參考答案:D解析:在c++語言中,所有的函數(shù)都是平行的,即在定義函數(shù)時是互相獨立的,一個函數(shù)并不從屬于另一個函數(shù),即函數(shù)不能嵌套定義,但可以互相調(diào)用。但是不能調(diào)用main()函數(shù)。
24必須用一對大括號括起來的程序段是( )。 A. switCh語句中的Case標(biāo)號語句B. if語句的分支C. 循環(huán)語句的循環(huán)體D. 函數(shù)的函數(shù)體
本題共1分,參考答案:D解析:本題考查c++基本控制結(jié)構(gòu),A、B、C三個選項中的大括號不是必須的,而D選項中的函數(shù)體必須使用大括號。
25軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應(yīng)用軟件的是( )。 A. 學(xué)生成績管理系統(tǒng)B. C語言編譯程序C. UNIX操作系統(tǒng)D. 數(shù)據(jù)庫管理系統(tǒng)
本題共1分,參考答案:A解析:軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件、支撐軟件。操作系統(tǒng)、編譯程序、匯編程序、網(wǎng)絡(luò)軟件、數(shù)據(jù)庫管理系統(tǒng)都屬于系統(tǒng)軟件。所以B、C、D都是系統(tǒng)軟件,只有A是應(yīng)用軟件。
26下面程序的運行結(jié)果為( )。
#include
void main()
{
for(int a=0,x=0;!x&&a<=10;a++)
{
a++:
}
cout<<< p>
}A. 10B. 1lC. 12D. 0
本題共1分,參考答案:C解析:在進入最后一次循環(huán)時a=10,在循環(huán)體內(nèi)執(zhí)行“a++;”后a=11,執(zhí)行完該次循環(huán)體計算for循環(huán)的增量部分后a=12小于l0,循環(huán)結(jié)束。
27有如下程序:
#include
using namespace std;
int i=1;
class Fun{
public:
static int i;
int value(){return i—l;}
int value()const{return i+1;}
};
int Fun::i=2;
int main(){
int i=3;
Fun funl;
const Fun fun2:
__________________
return 0;
}
若程序的輸出結(jié)果是:
123
則程序中下畫線處遺漏的語句是( )。 A. cout<<<<<<< cout<<<<<<
本題共1分,參考答案:A解析:本題考查構(gòu)造函數(shù)、常成員函數(shù)和靜態(tài)數(shù)據(jù)成員。外部同名的變量賦值,不能改變類的靜態(tài)變量值,所以Fun對象里的i值為2,所以本題答案為A。
28下列有關(guān)模板的敘述中,正確的是( )。 A. 函數(shù)模板不能含有常規(guī)形參B. 函數(shù)模板的一個實例就是一個函數(shù)定義C. 類模板的成員函數(shù)不能是模板函數(shù)D. 用類模板定義對象時,絕對不能省略模板實參
本題共1分,參考答案:B解析:本題考查函數(shù)模板和類模板的基礎(chǔ)知識,所以本題答案為B。
29運算符重載時不需要保持的性質(zhì)是( )。 A. 操作數(shù)個數(shù)B. 操作數(shù)類型C. 優(yōu)先級D. 結(jié)合性
本題共1分,參考答案:B解析:重載運算符的規(guī)則如下:①c++不允許用戶自己定義新的運算符,只能對已有的c++運算符進行重裁;②c++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應(yīng)有一個是類對象,即不允許參數(shù)全部是c++的標(biāo)準類型。所以答案為B。
30下列程序的輸出結(jié)果為( )。
#include< fune(int int>
{
if(n<1)return l;
else return n+time(n一1); return 0;
}
void main() {
cout<<< p>
}A. 0B. 10C. 15D. 16
本題共1分,參考答案:D解析:本題考查的是遞歸函數(shù)的使用,題中遞歸函數(shù)的結(jié)束條件為n
31有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass(int i=0){cout<<1;}
MyClass(const MyClass&x){cout<<2;}
MyClass&operator=(const MyClass&x){cout<<3;retum$this;}
~MyClass()}cout<<4;}
};
int main()
{
MyClass objl(1),obj2(2),obj3(objl);
retum 0;
{
執(zhí)行這個程序的輸出結(jié)果是( )。 A. 112444B. 11114444C. 121444D. 11314444
本題共1分,參考答案:A解析:本題:考查構(gòu)造函數(shù)和復(fù)制構(gòu)造函數(shù)以及重載運算符。本題中先后定義了兩個對象obj1,obj2,依次輸出口,然后定義了對象obj3,凋用復(fù)制構(gòu)造函數(shù),輸出2,最后執(zhí)行三次析構(gòu)函數(shù),輸出444。
32在下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是( )。 A. 外模式B. 內(nèi)模式C. 概念模式D. 邏輯模式
本題共1分,參考答案:B解析:數(shù)據(jù)庫系統(tǒng)的蘭級模式是概念模式、外模式和內(nèi)模式。概念模式是數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶公共數(shù)據(jù)視圖。外模式也稱子模式或用戶模式,它是用戶的數(shù)據(jù)視圖,給出了每個用戶的局部數(shù)據(jù)描述、、內(nèi)模式又稱物理模式,它給出r數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法,所以選擇8。
33有如下程序:
#inClude using namespaCe std; Class Base{
publiC:
void output(){Cout<<1;}
virtual void Print(){Cout<<'B’;} };
Class Derived:publiC Base{ publiC:
void output(){Cout<<2;} void Print(){Cout<<’D ';} };
int main() {
Base * ptr=new Derived; ptr一>output();
ptr一>Print(); delete ptr;
retum0; }
執(zhí)行這個程序的輸出結(jié)果是( )。 A. 1BB. lDC. 2BD. 2D
本題共1分,參考答案:B解析:在某基類中聲明為vitua1并在一個或多個派生類中被重新定義的成員函數(shù),本題中定義了一個指向派生類對象的基類指針ptr,執(zhí)行ptr一>outpnt后,會執(zhí)行基類的output函數(shù),輸出1,由于Print是虛函數(shù),所以ptr->Print()會執(zhí)行派生類的Print,即輸出D,所以本題答案為B。
34以下程序中,錯誤的行為是( )。
①#include
②class A
③{
④public:
⑤ int n=2;
⑥ A(int val){cout<<< p>
⑦ -A(){};
⑧};
⑨void main() ⑩{
⑪ A a(0);
⑫}A. ⑤B. ⑥C. ⑦D. ⑪本題共1分,參考答案:A解析:C++語言中規(guī)定在類體中不允許對所定義的數(shù)據(jù)成員進行初始化。35下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是( )。 A. 循環(huán)隊列B. 帶鏈隊列C. 二叉樹D. 帶鏈棧
本題共1分,參考答案:C解析:樹是簡單的非線性結(jié)構(gòu),所以二叉樹作為樹的一種也是一種非線性結(jié)構(gòu)。
36有如下程序:
#inClude using namespaCe std; Class A{
publiC:
statiC int a;
void init( ){。a=1;}
A(int a=2){init( );a++;} };
int A::a:0: A obj;
int main( ) {
Cout<< return>
}
運行時輸出的結(jié)果是( )。 A. 0B. 1C. 2D. 3
一、選擇題(每小題1分,共40分)1關(guān)于運算符重載,下列表述中正確的是( )。A. c++已有的任何運算符都可以重載B. 運算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型C. 在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型D. 可以通過運算符重載來創(chuàng)建c++中原來沒有的運算符
本題共1分,參考答案:C解析:重載運算符的規(guī)則如下:①c++不允許用戶自己定義新的運算符,只能對已有的c++運算符進行重載;②c++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應(yīng)有一個是類對象,即不允許參數(shù)全部是c++的標(biāo)準類型。故本題答案為c。
2在類的定義中,用于為對象分配內(nèi)存空間,對類的數(shù)據(jù)成員進行初始化并執(zhí)行其他內(nèi)部管理操作的函數(shù)是( )。 A. 友元函數(shù)B. 虛函數(shù)C. 構(gòu)造函數(shù)D. 析構(gòu)函數(shù)
本題共1分,參考答案:C解析:構(gòu)造函數(shù)在創(chuàng)建對象時系統(tǒng)自動調(diào)用,其功能是使用給定的值將對象初始化。
3軟件設(shè)計中模塊劃分應(yīng)遵循的準則是( )。 A. 低內(nèi)聚低耦合B. 高內(nèi)聚低耦合C. 低內(nèi)聚高耦合D. 高內(nèi)聚高耦合
本題共1分,參考答案:B解析:軟件沒計中模塊劃分應(yīng)遵循的準則是高內(nèi)聚低偶合、模塊大小規(guī)模適當(dāng)、模塊的依賴關(guān)系適當(dāng)?shù)取DK的劃分應(yīng)遵循一定的要求,以保證模塊劃分合理,并進一步保證以此為依據(jù)開發(fā)出的軟件系統(tǒng)可靠性強,易于理解和維護。模塊之間的耦合應(yīng)盡可能的低,模塊的內(nèi)聚度應(yīng)盡町能的高。
4如果類A被說明成類B的友元,則( )。 A. 類A的成員即類B的成員B. 類B的成員即類A的成員C. 類A的成員函數(shù)不得訪問類B的成員D. 類B不一定是類A的友元
本題共1分,參考答案:D解析:本題考查的是友元類的定義:類A為類B的友元類,則類A的所有成員函數(shù)都是類8的友元函數(shù),但反之則不一定成立。
5有如下類定義:
class Foo
{
public:
Foo(int v):value(V){}//①
~Foo(){}//②
private:
Foo(){}//③
int value=0://④
};
其中存在語法錯誤的行是( )。 A. ①B. ②C. ③D. ④
本題共1分,參考答案:D解析:本題考查對象的初始化,類的數(shù)據(jù)成員是不能在聲明類時初始化的,所以本題答案為D。
6下面關(guān)于數(shù)組的描述錯誤的是( )。 A. 在C++語言中數(shù)組的名字就是指向該數(shù)組第一個元素的指針B. 長度為n的數(shù)組,下標(biāo)的范圍是0~n-1C. 數(shù)組的大小必須在編譯時確定D. 數(shù)組只能通過值參數(shù)和引用參數(shù)兩種方式傳遞給函數(shù)
本題共1分,參考答案:D解析:本題考查的是數(shù)組的基本使用,數(shù)組還可以通過對應(yīng)的指針調(diào)用傳遞參數(shù),其余選項的說法都是正確的。
7運算符重載是對已有的運算符賦予多重含義,因此( )。 A. 可以對基本類型(如int類型)的數(shù)據(jù),重新定義“+”運算符的含義B. 可以改變一個已有運算符的優(yōu)先級和操作數(shù)個數(shù)C. 只能重載c++中已經(jīng)有的運算符,不能定義新運算符D. C++中已經(jīng)有的所有運算符都可以重載
本題共1分,參考答案:C解析:重載運算符的規(guī)則如下:①c++不允許用戶自己定義新的運算符,只能對已有的c++運算符進行重載;②c++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應(yīng)有一個是類對象,即不允許參數(shù)全部是c++的標(biāo)準類型。故本題答案為c。
8有如下類和對象的定義:
class Constants{
public:
static double getPI(){return 3.1416;}
};
Constants constants:
下列各組語句中,能輸出3.1416的是( )。 A. cout
本題共1分,參考答案:D解析:本題考查靜態(tài)成員函數(shù)。靜態(tài)成員函數(shù)由于沒有this指針,所以不能訪問本類中的非靜態(tài)成員。引用靜態(tài)成員函數(shù)有2種方式,一種是直接使用類來引用,即Constants::getpI();另一種是使用對象來引用,即constants.getPI()。所以本題答案為D。
9程序流程圖中帶有箭頭的線段表示的是( )。 A. 圖元關(guān)系B. 數(shù)據(jù)流C. 控制流D. 調(diào)用關(guān)系
本題共1分,參考答案:C解析:在數(shù)據(jù)流圖中,用標(biāo)有名字的箭頭表示數(shù)據(jù)流。在程序流程圖中,用標(biāo)有名字的箭頭表示控制流。所以選擇C。
10下列程序的執(zhí)行結(jié)果為( )。
#include
void main()
{
int a=3,b=0;
int*P =&a;
b=+a++;
cout<<*P<<”,”<<< p>
}A. 3,4B. 4,3C. 3,4D. 4,4
本題共1分,參考答案:B解析:*P為所指對象a的值,語句“b=+a++;”等價于“b=b+a;a=a+1;”。
11對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(rt一1)/2的排序方法是( )。 A. 快速排序B. 冒泡排序C. 直接插入排序D. 堆排序
本題共1分,參考答案:D解析:除了堆排序算法的比較次數(shù)是0(nlog2n),其他的都是n(n—1)/2。
12字面常量42、4.2、42L的數(shù)據(jù)類型分別是( )。 A. long,double、intB. lon9、float、intC. int、double、longD. int、float、long
本題共1分,參考答案:C解析:本題考查整型變量的類型和浮點變量的類型,42默認為int型數(shù)據(jù),42后面加上L后,表示long型數(shù)據(jù),4.2默認為double型數(shù)據(jù)。
13下列敘述中正確的是( )。 A. 棧是“先進先出”的線性表B. 隊列是“先進后出”的線性表C. 循環(huán)隊列是非線性結(jié)構(gòu)D. 有序線性表既可以采用順序存儲結(jié)構(gòu),也可以采用鏈式存儲結(jié)構(gòu)
本題共1分,參考答案:D解析:棧是先進后出的線性表,所以A錯誤;隊列是先進先出的線性表,所以B錯誤;循環(huán)隊列是線性結(jié)構(gòu)的線性表,所以C錯誤。
14不能作為重載函數(shù)的調(diào)用的依據(jù)是( )。 A. 參數(shù)個數(shù)B. 參數(shù)類型C. 函數(shù)類型D. 函數(shù)名稱
本題共1分,參考答案:D解析:所謂重載函數(shù)是指同一個函數(shù)名可以對應(yīng)多個函數(shù)的實現(xiàn),編譯器會根據(jù)參數(shù)個數(shù)、參數(shù)類型和函數(shù)返回值類型不同而自動調(diào)用相應(yīng)的函數(shù)。
15下列語句中,錯誤的是( )。 A. const int buffer=256;B. const double*point;C. int const buffer=256;D. double*eonst point:
本題共1分,參考答案:D解析:const是一個C++關(guān)鍵字,用于限定不允許改變的變量。選項B是指向常量的指針,定義時可以不初始化;選項D是指針常量,定義時必須初始化。故答案為D。
16下列運算符中,在c++語言中不能重載的是( )。 A. *B. >=C. ::D. /
本題共1分,參考答案:C解析:不能被重載的運算符還包括:“.”、“.*”、“->*”和“?:”。
17有如下說明:
int a[10]={1,2,3,4,5,6,7,8,9,10},* P=a; 則數(shù)值為9的表達式是( )。 A. *P+9B. 木(P+8)C. *P+=9D. P+8
本題共1分,參考答案:B解析:本題考查指向數(shù)組的指針,本題中指針變量P指向數(shù)組a,那么*P的值就是1,即表示數(shù)組的第一個元素,那么數(shù)值為9的表達式就是將指針向后移動8個地址,即P+8指向的是數(shù)組元素值為9,所以數(shù)值為9的表達式是*(P+8)。
18執(zhí)行下列語句段后,輸出字符“*”的個數(shù)是( )。
for(int i=50;i>1;i-=2)Cout<<'*': A. 24B. 25C. 26D. 50
本題共1分,參考答案:B解析:本題考查for循環(huán)語句,題目中每執(zhí)行完循環(huán)體后,i都會減2.那么只有50到2之間的偶數(shù)才能輸出“*”,所以總共輸出25次。
19算法的有窮性是指( )。 A. 算法程序的運行時間是有限的B. 算法程序所處理的數(shù)據(jù)量是有限的C. 算法程序的長度是有限的D. 算法只能被有限的用戶使用
本題共1分,參考答案:A解析:算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算后即可完成。有窮性是指算法程序的運行時間是有限的。
20下面關(guān)于break語句的描述中,不正確的是( )。 A. break可以用于循環(huán)體內(nèi)B. break語句可以在for循環(huán)語句中出現(xiàn)多次C. break語句可以在switch語句中出現(xiàn)多次D. break語句可用于if條件判斷語句內(nèi)
本題共1分,參考答案:D解析:本題考查的是break語句的使用,break可以結(jié)束switch語句和for循環(huán)語句,但是不能使用在條件判斷語句內(nèi)。
21有如下類定義:
class Point
{
int xx.yy;
public:
Point():xx(0),yy(0){}
Point(int x,int Y=0):xx(X),YY(Y){}
};
若執(zhí)行語句
Point a(2),b[3],幸c[4];
則Point類的構(gòu)造函數(shù)被調(diào)用的次數(shù)是( )。 A. 2次B. 3次C. 4次D. 5次
本題共1分,參考答案:C解析:本題考查默認構(gòu)造函數(shù)和帶參數(shù)的構(gòu)造函數(shù),題目中定義一個對象a(2)以及對象數(shù)組b[3],共執(zhí)行4次構(gòu)造函數(shù),對象指針不調(diào)用構(gòu)造函數(shù)。所以本題答案為c。
22有如下程序:
#include
using namespace std;
class Basel
{
public:
BaseI(int D.{cout<< p>
一Basel(){}
};
class Base2
{
public:
Base2(int D.{tout<< p>
~Base2(){}
};
class Derived:public Basel,Base2
{
public:
Derived(int a,int b,int c,int D.:Basel(B.,Base2(A.,bl(D.,b2(C.{}
private:
int bl:
int b2:
};
int main()
{
Derived d(1,2,3,4);
return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。 A. 1234B. 2134C. 12D. 21
本題共1分,參考答案:D解析:本題考查派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù),在定義一個派生類的對象時,先調(diào)用基類的構(gòu)造函數(shù),然后再執(zhí)行派生類的構(gòu)造函數(shù),對象釋放時,先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù)。本題中定義一個派生類對象時,分別調(diào)用基類的構(gòu)造函數(shù),所以分別輸出21。
23以下敘述正確的是( )。 A. 函數(shù)可以嵌套定義但不能嵌套調(diào)用B. 函數(shù)既可以嵌套調(diào)用也可以嵌套定義C. 函數(shù)既不可以嵌套定義也不可以嵌套調(diào)用D. 函數(shù)可以嵌套調(diào)用但不可以嵌套定義
本題共1分,參考答案:D解析:在c++語言中,所有的函數(shù)都是平行的,即在定義函數(shù)時是互相獨立的,一個函數(shù)并不從屬于另一個函數(shù),即函數(shù)不能嵌套定義,但可以互相調(diào)用。但是不能調(diào)用main()函數(shù)。
24必須用一對大括號括起來的程序段是( )。 A. switCh語句中的Case標(biāo)號語句B. if語句的分支C. 循環(huán)語句的循環(huán)體D. 函數(shù)的函數(shù)體
本題共1分,參考答案:D解析:本題考查c++基本控制結(jié)構(gòu),A、B、C三個選項中的大括號不是必須的,而D選項中的函數(shù)體必須使用大括號。
25軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件)。下面屬于應(yīng)用軟件的是( )。 A. 學(xué)生成績管理系統(tǒng)B. C語言編譯程序C. UNIX操作系統(tǒng)D. 數(shù)據(jù)庫管理系統(tǒng)
本題共1分,參考答案:A解析:軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件、支撐軟件。操作系統(tǒng)、編譯程序、匯編程序、網(wǎng)絡(luò)軟件、數(shù)據(jù)庫管理系統(tǒng)都屬于系統(tǒng)軟件。所以B、C、D都是系統(tǒng)軟件,只有A是應(yīng)用軟件。
26下面程序的運行結(jié)果為( )。
#include
void main()
{
for(int a=0,x=0;!x&&a<=10;a++)
{
a++:
}
cout<<< p>
}A. 10B. 1lC. 12D. 0
本題共1分,參考答案:C解析:在進入最后一次循環(huán)時a=10,在循環(huán)體內(nèi)執(zhí)行“a++;”后a=11,執(zhí)行完該次循環(huán)體計算for循環(huán)的增量部分后a=12小于l0,循環(huán)結(jié)束。
27有如下程序:
#include
using namespace std;
int i=1;
class Fun{
public:
static int i;
int value(){return i—l;}
int value()const{return i+1;}
};
int Fun::i=2;
int main(){
int i=3;
Fun funl;
const Fun fun2:
__________________
return 0;
}
若程序的輸出結(jié)果是:
123
則程序中下畫線處遺漏的語句是( )。 A. cout<<<<<<< cout<<<<<<
本題共1分,參考答案:A解析:本題考查構(gòu)造函數(shù)、常成員函數(shù)和靜態(tài)數(shù)據(jù)成員。外部同名的變量賦值,不能改變類的靜態(tài)變量值,所以Fun對象里的i值為2,所以本題答案為A。
28下列有關(guān)模板的敘述中,正確的是( )。 A. 函數(shù)模板不能含有常規(guī)形參B. 函數(shù)模板的一個實例就是一個函數(shù)定義C. 類模板的成員函數(shù)不能是模板函數(shù)D. 用類模板定義對象時,絕對不能省略模板實參
本題共1分,參考答案:B解析:本題考查函數(shù)模板和類模板的基礎(chǔ)知識,所以本題答案為B。
29運算符重載時不需要保持的性質(zhì)是( )。 A. 操作數(shù)個數(shù)B. 操作數(shù)類型C. 優(yōu)先級D. 結(jié)合性
本題共1分,參考答案:B解析:重載運算符的規(guī)則如下:①c++不允許用戶自己定義新的運算符,只能對已有的c++運算符進行重裁;②c++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應(yīng)有一個是類對象,即不允許參數(shù)全部是c++的標(biāo)準類型。所以答案為B。
30下列程序的輸出結(jié)果為( )。
#include< fune(int int>
{
if(n<1)return l;
else return n+time(n一1); return 0;
}
void main() {
cout<<< p>
}A. 0B. 10C. 15D. 16
本題共1分,參考答案:D解析:本題考查的是遞歸函數(shù)的使用,題中遞歸函數(shù)的結(jié)束條件為n
31有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass(int i=0){cout<<1;}
MyClass(const MyClass&x){cout<<2;}
MyClass&operator=(const MyClass&x){cout<<3;retum$this;}
~MyClass()}cout<<4;}
};
int main()
{
MyClass objl(1),obj2(2),obj3(objl);
retum 0;
{
執(zhí)行這個程序的輸出結(jié)果是( )。 A. 112444B. 11114444C. 121444D. 11314444
本題共1分,參考答案:A解析:本題:考查構(gòu)造函數(shù)和復(fù)制構(gòu)造函數(shù)以及重載運算符。本題中先后定義了兩個對象obj1,obj2,依次輸出口,然后定義了對象obj3,凋用復(fù)制構(gòu)造函數(shù),輸出2,最后執(zhí)行三次析構(gòu)函數(shù),輸出444。
32在下列模式中,能夠給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是( )。 A. 外模式B. 內(nèi)模式C. 概念模式D. 邏輯模式
本題共1分,參考答案:B解析:數(shù)據(jù)庫系統(tǒng)的蘭級模式是概念模式、外模式和內(nèi)模式。概念模式是數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結(jié)構(gòu)的描述,是全體用戶公共數(shù)據(jù)視圖。外模式也稱子模式或用戶模式,它是用戶的數(shù)據(jù)視圖,給出了每個用戶的局部數(shù)據(jù)描述、、內(nèi)模式又稱物理模式,它給出r數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法,所以選擇8。
33有如下程序:
#inClude using namespaCe std; Class Base{
publiC:
void output(){Cout<<1;}
virtual void Print(){Cout<<'B’;} };
Class Derived:publiC Base{ publiC:
void output(){Cout<<2;} void Print(){Cout<<’D ';} };
int main() {
Base * ptr=new Derived; ptr一>output();
ptr一>Print(); delete ptr;
retum0; }
執(zhí)行這個程序的輸出結(jié)果是( )。 A. 1BB. lDC. 2BD. 2D
本題共1分,參考答案:B解析:在某基類中聲明為vitua1并在一個或多個派生類中被重新定義的成員函數(shù),本題中定義了一個指向派生類對象的基類指針ptr,執(zhí)行ptr一>outpnt后,會執(zhí)行基類的output函數(shù),輸出1,由于Print是虛函數(shù),所以ptr->Print()會執(zhí)行派生類的Print,即輸出D,所以本題答案為B。
34以下程序中,錯誤的行為是( )。
①#include
②class A
③{
④public:
⑤ int n=2;
⑥ A(int val){cout<<< p>
⑦ -A(){};
⑧};
⑨void main() ⑩{
⑪ A a(0);
⑫}A. ⑤B. ⑥C. ⑦D. ⑪本題共1分,參考答案:A解析:C++語言中規(guī)定在類體中不允許對所定義的數(shù)據(jù)成員進行初始化。35下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是( )。 A. 循環(huán)隊列B. 帶鏈隊列C. 二叉樹D. 帶鏈棧
本題共1分,參考答案:C解析:樹是簡單的非線性結(jié)構(gòu),所以二叉樹作為樹的一種也是一種非線性結(jié)構(gòu)。
36有如下程序:
#inClude using namespaCe std; Class A{
publiC:
statiC int a;
void init( ){。a=1;}
A(int a=2){init( );a++;} };
int A::a:0: A obj;
int main( ) {
Cout<< return>
}
運行時輸出的結(jié)果是( )。 A. 0B. 1C. 2D. 3