2015年計算機二級考試《C++》高分突破試卷
參考解析:x數組共有10個元素,在花括號內只提供3個初值,這表示只給前面的3個成員賦值,后7個元素的值為0,所以,一共有20個字節。
2有兩個關系R,S如下:
由關系R通過運算得到關系s,則所使用的運算為( )。
A.選擇B.投影C.插入D.連接
參考答案:B
參考解析:投影運算是指對于關系內的域指定可引入新的運算。本題中s是在原有關系R的內部進行的,是由R中原有的那些域的列所組成的關系。所以選擇B。
3對于循環隊列,下列敘述中正確的是( )。
A.隊頭指針是固定不變的
B.隊頭指針一定大于隊尾指針
C.隊頭指針一定小于隊尾指針
D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針
參考解析:循環隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進行變化。因為是循環利用的隊列結構所以隊頭指針有時可能大于隊尾指針有時也可能小于隊尾指針。
4下列有關函數重載的敘述中,錯誤的是( )。
A.函數重載就是用相同的函數名定義多個函數
B.重載函數的參數列表必須不同
C.重載函數的返回值類型必須不同
D.重載函數的參數可以帶有默認值
參考答案:C
參考解析:所謂函數重載是指同一個函數名可以對應著多個函數的實現。每種實現對應著一個函數體,這些函數的名字相同,但是函數參數的類型不同,還允許參數的個數不 同,但不能只有函數的返回值類型不同而參數的個數和類型相同的重載。所以本題答案為c。
5有三個關系R S和T如下.
則由關系R和S得到關系T的操作是( )。
A.自然連接B.并C.交D.差
參考解析:關系T中的元組是關系R中有而關系s中沒有的元組的集合,即從關系R中除去與關系s中相同元組后得到的關系T。所以做的是差的運算。
6下面關于類和對象的描述中,錯誤的是( )。
A.類就是C語言中的結構體類型,對象就是C語言中的結構體變量
B.類和對象之間的關系是抽象和具體的關系
C.對象是類的實例,一個對象必須屬于一個已知的類
D.類是具有共同行為的若干對象的統一描述體
參考答案:A
參考解析:在c++語言中,類和結構體有本質區別,類中包含數據及操作函數,而結構體只包含有數據。
7有如下程序:
#inClude
using namespaCe std;
Class test{
private:
int a;
publiC:
test( ){Cout<<”ConstruCtor”<
test(int A.{Cout<
test(Const test&_test){ a=test.a:
Cout<<”Copy ConstruCtor”<
test( ){Cout<<”destruCtor”<
};
int main( ){ test A(3); return 0;
}
執行這個程序的輸出結果是( )。
A.3B.ConstruCtor
destruCtorC.Copy ConstruCtor
destruCtorD.3
destruCtor
參考解析:本題考查默認構造函數和帶參數的構造函數以及析構函數,本題中定義了一個對象A(3),對象帶著參數,所以執行帶參數的構造函數.輸出3,然后執行析構溺數,輸出destructor。所以本題答案為D。
8有如下函數模板:
template
T east(U u)i return u;}
其功能是將U類型數據轉換為T類型數據。已知i為int型變量,下列對模板函數cast的調用中正確的是( )。
A.cast(i);B.cast<>(i);C.east(i);D.east(i);
參考解析:本題考查函數模板的基本運用,屬于基礎知識。函數模板實際上是建立一個通用函數,其函數類型和形參類型不具體指定,用一個虛擬的類型代表,這個通用函數就是函數模板。函數模板可以設定默認參數,這樣在調用模板函數時就可以省實參,函數模板的實例就是一個函數的定義。所以本題答案為D。
9下面程序的運行結果是( )。
#include
void fun(int *a,int *B. {
int x=*a:
*a=*b;*b=X;
cout<<*a<<*b<<””:
void main() {
int X=1,Y=2; fun(&x,&y);
cout<
}
A.12 12B.12 21C.21 12D.21 21
參考解析:本題考查的是指針和引用,函數fun完成把x和Y互換的操作。
10在C++語言中,打開一個文件就是將這個文件與一個( )建立關聯。
A.流B.類C.結構D.對象
參考答案:A
參考解析:c++的V0系統是通過一一種稱為流的機制來實現文件和控制臺的I/0操作的。簡單地說,在C++中,輸入/輸出操作是通過流來完成的。而文件流以磁盤文件及其他可按文件方式進行管理的外部設備為輸入/輸出對象。每個文件流都應當與一個打開的文件相聯系;關閉卟文件就是取消這種聯系。
11下列語句中,錯誤的是( )。
A.const int buffer:256;
B.const int temp;
C.const double*point;
D.const double*rt=new double(5.5);
參考答案:B
參考解析:eonst是一個C++語言的關鍵字,它限定一個變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性。限定符聲明變量只能被讀,必須初始化:,B選項中沒有初始化,C選項為指向常量的指針,定義時初始化與否均可,如果是const*double point形式,則為常指針,必須在定義時進行初始化,A、c、D都正確。
12下列程序的輸出結果為( )。
#include
void main()
{
char*a[]={”hell0”,”the”,”world”};
char** pa = a:
pa++;
cout<<*pa<
}
A.helloB.theC.worldD.hellotheworld
參考答案:B
參考解析:本題主要考查的是指針數組和指向指針的指針之間的關系,其中a是指針數組,pa是指向指針數組行的指針,所以pa自加l相當于指向下一行。
13關于運算符重載,下列表述中正確的是( )。
A.C++已有的任何運算符都可以重載
B.運算符函數的返回類型不能聲明為基本數據類型
C.在類型轉換符函數的定義中不需要聲明返回類型
D.可以通過運算符重載來創建C++中原來沒有的運算符
參考答案:C
參考解析:重載運算符的規則如下:①c++不允許用戶自已定義新的運算符,只能對已有的c++運算符進行重載;②c++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數;④重載不能改變運算符的優先級和結合性;⑤重載運算符的函數不能有默認的參數;⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用.至少應有一個是類對象,即不允許參數全部是c++的標準類型。故本題答案為c。
14可以用P.a的形式訪問派生類對象P的基類成員a,其中a是( )。
A.私有繼承的公有成員
B.公有繼承的私有成員
C.公有繼承的保護成員
D.公有繼承的公有成員
參考解析:只有公有繼承的公有成員才能被派生類的對象直接訪問,其他的情況都會因為訪問權限問題產生錯誤。
15在下列原型所示的C++函數中,按“傳值”方式傳遞參數的是( )。
A.void fl(int X);
B.void t2(int*X);
C.void f3(Const int*X);
D.void f4(int&x);
參考答案:A
參考解析:函數參數的3種傳遞方式:①將變量名作為形參和實參,即傳值方式;②傳遞變量指針;③引用形參。其中B、C選項都是傳遞變量指針,D選項為引用形參,所以本題答案為A。
16以下關鍵字不能用來聲明類的訪問權限的是( )。
A.publicB.staticC.protectedD.private
參考答案:B
參考解析:類的成員訪問權限有3種:public(公用)、protected(保護)、private(私有)。
17下面程序的運行結果為( )。
#include class A
{
int hum;
public:
A(int i){nuln=i;}
A(A&A.{num=a.num十+;} void print(){eout(
void main()
A a(1),b(A.; a.print();
A print();
A.11B.12C.21D.22
參考答案:C
參考解析:本題考查考生對拷貝構造函數的掌握。因為++運算是右結合的,所以在使用a對b賦值時,b的nnm變為1,而a的nnm變為2(先賦值再自加)。
18下面是重載為非成員函數的運算符的函數原型,其中錯誤的是( )。
A.Fraction operator+(Fraction,Fraction);
B.Fraction operator一(Fraction);
C.Fraction&operator=(Fraction&,Fraction);
D.Fraction&operator+=(Fraction&,Fraction);
參考答案:C
參考解析:本題考查四種運算符作為非成員函數的重載的使用方法,根據重載規則,本題答案為c,c項正確原型為:Fraction operator=(Fraction&)。
19下列語句中錯誤的是( )。
A.Const int a;
B.Const int a=10;
C.Const int * point=0;
D.Const int * point=new int(10);
參考答案:A
參考解析:const是一個c++語言的關鍵字,它限定一個變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性。限定符聲明變量照能被讀,必須初始化。A選項沒有初始化,B、C、D選項都正確。
20下列關于函數的描述中,錯誤的是( )。
A.函數可以沒有返回值
B.函數可以沒有參數
C.函數可以是一個類的成員
D.函數不能被定義為模板
參考解析:本題考查函數的基礎知識,函數可以沒有返回值,沒有參數,也可以是一個類的成員,函數可以定義為模板,即模板函數。
22有三個關系R、S和T如下:
則由關系R和S得到關系T的操作是( )。
A.自然連接B.差C.交D.并
參考答案:B
參考解析:關系T中的元組是R關系中有而S關系中沒有的元組的集合,所以進行的是差的運算。
23有如下程序:
#include
using namespace std;
class VAC{
public:
intf()const{return 3;}
int f(){retum 5;}
};
int main()
{
VAC vl;
const VAC v2;
cout<
return 0;
}
執行這個程序的輸出結果是( )。
A.53B.35C.55D.33
參考答案:A
參考解析:本題考查常對象及常成員函數及構造函數,常塒象只能凋用常成員函數,所以本題中,對象v1為普通對象,執行v1.f()后,會執行默認構造函數,輸出5,對象v2為常列象,執行v2.f()后,會執行常構造函數,輸出3。