第 1 頁:選擇題 |
第 3 頁:程序改錯題 |
第 4 頁:簡單應用題 |
第 5 頁:綜合應用題 |
21設有定義語句int(*f)(int);,則下列敘述正確的是( )。
A.f是基類型為int的指針變量
B.f是指向函數的指針變量,該函數具有一個int類型的形態
C.f是指向int類型一維數組的指針變量
D.f是函數名,該函數的返回值是其類型為int類型的地址
參考答案:B
參考解析:定義語句int(*f)(int)中f是指向函數的指針變量,該函數中也只有一個int型的形參。
22為類Matrix重載下列運算符號時,只能作為Matrix類成員函數重載的運算符是( )。
A.+B.=C.<
參考答案:B
參考解析:賦值運算符只能作為重載函數的成員函數,其他運算符都可以作為友元函數重載。
23有兩個關系R和T如下所示:
則由關系R得到關系T的操作是( )。
A.選擇B.投影C.交D.并
參考答案:A
參考解析:選擇是建立一個含有與原始關系相同列數的新表,但是行只包括那些滿足某些特定標準的原始關系行。
24下列敘述中錯誤的是( )。
A.gets函數用于從終端讀入字符串
B.getchar函數用于從磁盤文件讀入字符
C.fputs函數用于把字符串輸出到文件
D.fwrite函數用于以二進制形式輸出數據到文件
參考答案:B
參考解析:本題考查的是c語言中輸入、輸出函數的使用,gets和getchar函數用于從標準輸入設備鍵盤讀入字符串和字符;fputs用于把字符串輸出到文件;fwrite用于以二進制形式輸出數據到文件。
25下列程序的執行結果是( )。
#include
classSample
{
intx,y;
public:
Sample(){x=y=0;}
Sample(inta,intb){x=a;y=b;}
~Sample()
{
if(x==y)
cout<<"x=y"<
else
cout<<"x!=y"<
}
voiddisp()
{
cout<<"x="<
};
voidmain()
{
Samples1(2,3);
s1.disp();
}
A.x=2,y=2B.x=3,y=3C.x=2,y=3D.x=3,y=2
參考答案:C
參考解析:本題考查類的構造函數 和析構函數。首先,Samplesl(2,3);會調用含有兩個參數的構造函數Sam-ple(inta,intb){x=a;y=b;),disp()函數輸出成員變量x和y的值x=2,y=3;然后結束時調用析構函數。因為x和y值不等,故輸出X!=Y。
26有如下程序:
#included
usingnamespqcestd;
classTestClass
{
private;
charC;
public;
TestClass(charn):c(n){}
~TestClass()
{
cout<
}
};
classTestClassl:publicTestClass
{
private:
charC;
public:
TestClassl(charn):TestClass(n+1),c(n){}~TestClassl()
{
cout<
}
};
intmain()
{
TestClasslobj('X');
return0;
}
執行上面的程序將輸出( )。
A.xyB.yxC.XD.y
參考答案:A
參考解析:本題中FestClass為基類,TestClass1為派生類。在主函數中定義TestClassl對象obj('x'),“TestClassl(charn):TestClass(n+1),c(n){}”,所以輸出x,然后調用基類構造函數,'x'+1='y',所以輸出y,即答案為xy。
27已知類MyClass的定義如下:
ClassMyClass{
public:
MyClass(intd){data=d;}
~MyClass(){}
private:
intdata;
};
下列對MyClass類對象數組的定義和初始化語句中,正確的是( )。
A.MyClassarray[2];
B.MyClassarray[2]={MyClass(5)};
C.MyClassarray[2]={MyClass(5),Myclass(6)};
D.MyClass*array=newMyClass[2];
參考答案:C
參考解析:A只是聲明,沒有初始化;B的初始化錯誤,另一個數組對象沒有指明地址;D同樣做的不是初始化的事情。
28下列關于二叉樹的敘述中,正確的是( )。
A.葉子結點總是比度為2的結點少一個
B.葉子結點總是比度為2的結點多一個
C.葉子結點數是度為2的結點數的兩倍
D.度為2的結點數是度為1的結點數的兩倍
參考答案:B
參考解析:葉子結點個數一度為2的結點個數+1。
29下列是關于派生類聲明的開始部分,其中正確的是( )。
A.classvirtualB:publicA
B.virtualclassB:publicA
C.classB:publicAvirtual
D.classB:virtualpublicA
參考答案:D
參考解析:聲明派生類的一般形成為class派生類名:[繼承方式]基類名。其中繼承方式包括public、private和protected。而virtual為C++中的關鍵字,所以選項C錯。虛函數的使用方法是在基類用virtual聲明成員函數為虛函數。
30針對數組定義intdata[10];,下列表述中錯誤的是( )。
A.用*data可訪問到數組的首元素
B.用data[9]可訪問到數組的末元素
C.用data[10]訪問數組元素會超出數組邊界
D.data共有10個元素,其首元素是data[1]
參考答案:D
參考解析:數組元素的下標是從0到<數組長度>-1,所以數組data的首元素是data[0],尾元素是data[9]。其他選項的描述都是正確的。
31下列關于純虛函數與抽象類的描述中,錯誤的是( )。
A.純虛函數是一種特殊的虛函數,它沒有具體的實現
B.抽象類是指具有純虛函數的類
C.一個基類聲明了純虛函數,該基類的派生類一定不是抽象類
D.抽象類只能作為基類來使用,其純虛函數的實現由派生類給出
參考答案:C
參考解析:純虛函數是在聲明虛函數時被“初始化”為0的虛函數。不定義對象而只作為一種基本類型作為繼承的類,稱為抽象類。凡是包含純虛函數的類都是抽象類。抽象類的作用是作為一個類族的共同基類。
32若要對Date類中重載的加法運算符成員函數進行聲明,下列選項中正確的是( )。
A.Data+{Data};
B.Dataoperator+{Data};
C.Data+operator{Data};
D.operator+{Data.Data};
參考答案:B
參考解析:重載運算符的函數一般格式如為:函數類型0perator運算符名稱(形參列表),因此選8。
33下列關于構造函數和析構函數的描述,錯誤的是( )。
A.析構函數中調用虛函數采用靜態聯編
B.對虛析構函數的調用可以采用動態聯編
C.當基類的析構函數是虛函數時,其派生類的析構函數也一定是虛函數
D.構造函數可以聲明為虛函數
參考答案:D
參考解析:構造函數的主要作用是對數據成員初始化。構造函數不能聲明為虛函數,這是因為在執行構造函數時類對象還未完成建立過程,當然談不上函數與類對象的關聯。
34設有如下三個關系表:
下列操作中正確的是( )。
A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S
參考答案:C
參考解析:關系代數中的集合運算有并、差、交和笛卡兒積四種。根據本題關系T中的元組可知,它是由關系R和關系S進行笛卡兒積運算得到的。第34題 筆記記錄我的筆記(0) | 精選筆記(0)選擇筆記標簽:試題內容(0)答案解析(0)
35類模板的使用實際上是將類模板實例化成一個具體的( )。
A.類B.對象C.函數D.模扳類
參考答案:A
參考解析:類模板就是把畿中的數據分離出來,作為一個類的描述。C++編譯器根據類模板和特定的數據類型來產生一個類,類模板就是一個抽象的類。
36有如下程序:
#included
usingnamespacestd;
classTestClass{
protected:
TestClass( ){cout<<'X';}
TestClass(charc){cout<
classTestClassl:publicTestClass{
public:
TestClassl(charc){cout<
intmain( ){
TestClassld1('y');
return0;}
執行這個程序,屏幕上將顯示輸出( )。
A.yB.yxC.xyD.yy
參考答案:C
參考解析:本題中類TestClass為基類,TestClassl為TestClass的派生類。由main主函數入手,定義TestClassl類型的對象dl,參數值為y。TestClassl類繼承TestClass,所以主函數中“TestClassldl('y');”語句首先調用“TestClassl(charc){colll<
37下面程序的運行結果是( )。
#include
classbase{
protected:
inta;
public:
base(){cout<<"0";}
};
classbasel:virtualbase{
public:
basel(){cout<<"1";}
};
classbase2:virtualbase{
public:
base2(){cout<<"2";}
};
classderived:publicbasel,publicbase2{
public:
derived(){cout<<"3";}
};
voidmain()
{
derivedobj;
eout<
}
A.0123B.3120C.O312D.3012
參考答案:A
參考解析:本題考查的是含有虛基類的繼承中構造函數的調用順序,應該先調用基類的構造函數,接著是按照派生類繼承列表的順序依次調用虛基類的構造函數,最后調用派生類自己的構造函數。
38下列字符串中可以用作C++語言標識符的是( )。
A.1234B.foo~~barC.virtualD.34var
參考答案:A
參考解析:C++語言標識符只能由數字、字母和下畫線組成,并且只能以字母和下畫線為開頭。
39下列有關數據庫的敘述,正確的是( )。
A.數據處理是將信息轉化為數據的過程
B.數據的物理獨立性是指當數據的邏輯結構改變時,數據的存儲結構不變
C.關系中的每一列稱為元組,一個元組就是一個字段
D.如果一個關系中的屬性或屬性組并非該關系的關鍵字,但它是另一個關系的關鍵字,則稱其為本關系的外關鍵字
參考答案:D
參考解析:數據處理是指將數據轉換成信息的過程,故選項A敘述錯誤;數據的物理獨立性是指數據的物理結構的改變不會影響數據庫的邏輯結構,故選項B敘述錯誤;關系中的行稱為元組,對應存儲文件中的記錄,關系中的列稱為屬性,對應存儲文件中的字段,故選項c敘述錯誤。
40下面有關重載函數的描述中正確的是( )。
A.重載函數必須具有不同的返回值類型
B.重載函數形參個數必須不同
C.重載函數必須具有不同的形參列表
D.重載函數名可以不同
參考答案:C
參考解析:所謂函數重載,是指同一個函數名可以對應多個函擻的實現,進行函數重載時,要求同名函數的參數個數不同,或者參數類型不同。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |