• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. 計(jì)算機(jī)二級(jí)《C++》考前沖刺試題

        時(shí)間:2024-09-29 02:38:51 計(jì)算機(jī)學(xué)歷 我要投稿
        • 相關(guān)推薦

        2015年計(jì)算機(jī)二級(jí)《C++》考前沖刺試題

          一、選擇題

        2015年計(jì)算機(jī)二級(jí)《C++》考前沖刺試題

          1假定int類型變量占用兩個(gè)字節(jié),其有定義int x[10]={0,2,4};,則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)是( )。

          A.3B.6C.10D.20

          參考答案:D

          參考解析:x數(shù)組共有10個(gè)元素,在花括號(hào)內(nèi)只提供3個(gè)初值,這表示只給前面的3個(gè)成員賦值,后7個(gè)元素的值為0,所以,一共有20個(gè)字節(jié)。

          2有兩個(gè)關(guān)系R,S如下:

          由關(guān)系R通過(guò)運(yùn)算得到關(guān)系s,則所使用的運(yùn)算為(  )。

          A.選擇B.投影C.插入D.連接

          參考答案:B

          參考解析:投影運(yùn)算是指對(duì)于關(guān)系內(nèi)的域指定可引入新的運(yùn)算。本題中s是在原有關(guān)系R的內(nèi)部進(jìn)行的,是由R中原有的那些域的列所組成的關(guān)系。所以選擇B。

          3對(duì)于循環(huán)隊(duì)列,下列敘述中正確的是( )。

          A.隊(duì)頭指針是固定不變的

          B.隊(duì)頭指針一定大于隊(duì)尾指針

          C.隊(duì)頭指針一定小于隊(duì)尾指針

          D.隊(duì)頭指針可以大于隊(duì)尾指針,也可以小于隊(duì)尾指針

          參考答案:D

          參考解析:循環(huán)隊(duì)列的隊(duì)頭指針與隊(duì)尾指針都不是固定的,隨著入隊(duì)與出隊(duì)操作要進(jìn)行變化。因?yàn)槭茄h(huán)利用的隊(duì)列結(jié)構(gòu)所以隊(duì)頭指針有時(shí)可能大于隊(duì)尾指針有時(shí)也可能小于隊(duì)尾指針。

          4下列有關(guān)函數(shù)重載的敘述中,錯(cuò)誤的是(  )。

          A.函數(shù)重載就是用相同的函數(shù)名定義多個(gè)函數(shù)

          B.重載函數(shù)的參數(shù)列表必須不同

          C.重載函數(shù)的返回值類型必須不同

          D.重載函數(shù)的參數(shù)可以帶有默認(rèn)值

          參考答案:C

          參考解析:所謂函數(shù)重載是指同一個(gè)函數(shù)名可以對(duì)應(yīng)著多個(gè)函數(shù)的實(shí)現(xiàn)。每種實(shí)現(xiàn)對(duì)應(yīng)著一個(gè)函數(shù)體,這些函數(shù)的名字相同,但是函數(shù)參數(shù)的類型不同,還允許參數(shù)的個(gè)數(shù)不 同,但不能只有函數(shù)的返回值類型不同而參數(shù)的個(gè)數(shù)和類型相同的重載。所以本題答案為c。

          5有三個(gè)關(guān)系R S和T如下.

          則由關(guān)系R和S得到關(guān)系T的操作是( )。

          A.自然連接B.并C.交D.差

          參考答案:D

          參考解析:關(guān)系T中的元組是關(guān)系R中有而關(guān)系s中沒(méi)有的元組的集合,即從關(guān)系R中除去與關(guān)系s中相同元組后得到的關(guān)系T。所以做的是差的運(yùn)算。

          6下面關(guān)于類和對(duì)象的描述中,錯(cuò)誤的是( )。

          A.類就是C語(yǔ)言中的結(jié)構(gòu)體類型,對(duì)象就是C語(yǔ)言中的結(jié)構(gòu)體變量

          B.類和對(duì)象之間的關(guān)系是抽象和具體的關(guān)系

          C.對(duì)象是類的實(shí)例,一個(gè)對(duì)象必須屬于一個(gè)已知的類

          D.類是具有共同行為的若干對(duì)象的統(tǒng)一描述體

          參考答案:A

          參考解析:在c++語(yǔ)言中,類和結(jié)構(gòu)體有本質(zhì)區(qū)別,類中包含數(shù)據(jù)及操作函數(shù),而結(jié)構(gòu)體只包含有數(shù)據(jù)。

          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;

          }

          執(zhí)行這個(gè)程序的輸出結(jié)果是(  )。

          A.3B.ConstruCtor

          destruCtorC.Copy ConstruCtor

          destruCtorD.3

          destruCtor

          參考答案:D

          參考解析:本題考查默認(rèn)構(gòu)造函數(shù)和帶參數(shù)的構(gòu)造函數(shù)以及析構(gòu)函數(shù),本題中定義了一個(gè)對(duì)象A(3),對(duì)象帶著參數(shù),所以執(zhí)行帶參數(shù)的構(gòu)造函數(shù).輸出3,然后執(zhí)行析構(gòu)溺數(shù),輸出destructor。所以本題答案為D。

          8有如下函數(shù)模板:

          template

          T east(U u)i return u;}

          其功能是將U類型數(shù)據(jù)轉(zhuǎn)換為T類型數(shù)據(jù)。已知i為int型變量,下列對(duì)模板函數(shù)cast的調(diào)用中正確的是(  )。

          A.cast(i);B.cast<>(i);C.east(i);D.east(i);

          參考答案:D

          參考解析:本題考查函數(shù)模板的基本運(yùn)用,屬于基礎(chǔ)知識(shí)。函數(shù)模板實(shí)際上是建立一個(gè)通用函數(shù),其函數(shù)類型和形參類型不具體指定,用一個(gè)虛擬的類型代表,這個(gè)通用函數(shù)就是函數(shù)模板。函數(shù)模板可以設(shè)定默認(rèn)參數(shù),這樣在調(diào)用模板函數(shù)時(shí)就可以省實(shí)參,函數(shù)模板的實(shí)例就是一個(gè)函數(shù)的定義。所以本題答案為D。

          9下面程序的運(yùn)行結(jié)果是(  )。

          #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

          參考答案:D

          參考解析:本題考查的是指針和引用,函數(shù)fun完成把x和Y互換的操作。

          10在C++語(yǔ)言中,打開(kāi)一個(gè)文件就是將這個(gè)文件與一個(gè)( )建立關(guān)聯(lián)。

          A.流B.類C.結(jié)構(gòu)D.對(duì)象

          參考答案:A

          參考解析:c++的V0系統(tǒng)是通過(guò)一一種稱為流的機(jī)制來(lái)實(shí)現(xiàn)文件和控制臺(tái)的I/0操作的。簡(jiǎn)單地說(shuō),在C++中,輸入/輸出操作是通過(guò)流來(lái)完成的。而文件流以磁盤文件及其他可按文件方式進(jìn)行管理的外部設(shè)備為輸入/輸出對(duì)象。每個(gè)文件流都應(yīng)當(dāng)與一個(gè)打開(kāi)的文件相聯(lián)系;關(guān)閉卟文件就是取消這種聯(lián)系。

          11下列語(yǔ)句中,錯(cuò)誤的是( )。

          A.const int buffer:256;

          B.const int temp;

          C.const double*point;

          D.const double*rt=new double(5.5);

          參考答案:B

          參考解析:eonst是一個(gè)C++語(yǔ)言的關(guān)鍵字,它限定一個(gè)變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性。限定符聲明變量只能被讀,必須初始化:,B選項(xiàng)中沒(méi)有初始化,C選項(xiàng)為指向常量的指針,定義時(shí)初始化與否均可,如果是const*double point形式,則為常指針,必須在定義時(shí)進(jìn)行初始化,A、c、D都正確。

          12下列程序的輸出結(jié)果為( )。

          #include

          void main()

          {

          char*a[]={”hell0”,”the”,”world”};

          char** pa = a:

          pa++;

          cout<<*pa<

          }

          A.helloB.theC.worldD.hellotheworld

          參考答案:B

          參考解析:本題主要考查的是指針數(shù)組和指向指針的指針之間的關(guān)系,其中a是指針數(shù)組,pa是指向指針數(shù)組行的指針,所以pa自加l相當(dāng)于指向下一行。

          13關(guān)于運(yùn)算符重載,下列表述中正確的是(  )。

          A.C++已有的任何運(yùn)算符都可以重載

          B.運(yùn)算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型

          C.在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型

          D.可以通過(guò)運(yùn)算符重載來(lái)創(chuàng)建C++中原來(lái)沒(méi)有的運(yùn)算符

          參考答案:C

          參考解析:重載運(yùn)算符的規(guī)則如下:①c++不允許用戶自已定義新的運(yùn)算符,只能對(duì)已有的c++運(yùn)算符進(jìn)行重載;②c++不能重載的運(yùn)算符只有5 個(gè);③重載不能改變運(yùn)算符運(yùn)算對(duì)象的個(gè)數(shù);④重載不能改變運(yùn)算符的優(yōu)先級(jí)和結(jié)合性;⑤重載運(yùn)算符的函數(shù)不能有默認(rèn)的參數(shù);⑥重載的運(yùn)算符必須和用戶定義的自定義類型的對(duì)象一起使用.至少應(yīng)有一個(gè)是類對(duì)象,即不允許參數(shù)全部是c++的標(biāo)準(zhǔn)類型。故本題答案為c。

          14可以用P.a的形式訪問(wèn)派生類對(duì)象P的基類成員a,其中a是( )。

          A.私有繼承的公有成員

          B.公有繼承的私有成員

          C.公有繼承的保護(hù)成員

          D.公有繼承的公有成員

          參考答案:D

          參考解析:只有公有繼承的公有成員才能被派生類的對(duì)象直接訪問(wèn),其他的情況都會(huì)因?yàn)樵L問(wèn)權(quán)限問(wèn)題產(chǎn)生錯(cuò)誤。

          15在下列原型所示的C++函數(shù)中,按“傳值”方式傳遞參數(shù)的是(  )。

          A.void fl(int X);B.void t2(int*X);C.void f3(Const int*X);D.void f4(int&x);

          參考答案:A

          參考解析:函數(shù)參數(shù)的3種傳遞方式:①將變量名作為形參和實(shí)參,即傳值方式;②傳遞變量指針;③引用形參。其中B、C選項(xiàng)都是傳遞變量指針,D選項(xiàng)為引用形參,所以本題答案為A。

          16以下關(guān)鍵字不能用來(lái)聲明類的訪問(wèn)權(quán)限的是(  )。

          A.publicB.staticC.protectedD.private

          參考答案:B

          參考解析:類的成員訪問(wèn)權(quán)限有3種:public(公用)、protected(保護(hù))、private(私有)。

          17下面程序的運(yùn)行結(jié)果為( )。

          #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

          參考解析:本題考查考生對(duì)拷貝構(gòu)造函數(shù)的掌握。因?yàn)?+運(yùn)算是右結(jié)合的,所以在使用a對(duì)b賦值時(shí),b的nnm變?yōu)?,而a的nnm變?yōu)?(先賦值再自加)。

          18下面是重載為非成員函數(shù)的運(yùn)算符的函數(shù)原型,其中錯(cuò)誤的是( )。

          A.Fraction operator+(Fraction,F(xiàn)raction);

          B.Fraction operator一(Fraction);

          C.Fraction&operator=(Fraction&,F(xiàn)raction);

          D.Fraction&operator+=(Fraction&,F(xiàn)raction);

          參考答案:C

          參考解析:本題考查四種運(yùn)算符作為非成員函數(shù)的重載的使用方法,根據(jù)重載規(guī)則,本題答案為c,c項(xiàng)正確原型為:Fraction operator=(Fraction&)。

          19下列語(yǔ)句中錯(cuò)誤的是( )。

          A.Const int a;

          B.Const int a=10;

          C.Const int * point=0;

          D.Const int * point=new int(10);

          參考答案:A

          參考解析:const是一個(gè)c++語(yǔ)言的關(guān)鍵字,它限定一個(gè)變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性。限定符聲明變量照能被讀,必須初始化。A選項(xiàng)沒(méi)有初始化,B、C、D選項(xiàng)都正確。

          20下列關(guān)于函數(shù)的描述中,錯(cuò)誤的是( )。

          A.函數(shù)可以沒(méi)有返回值

          B.函數(shù)可以沒(méi)有參數(shù)

          C.函數(shù)可以是一個(gè)類的成員

          D.函數(shù)不能被定義為模板

          參考答案:D

          參考解析:本題考查函數(shù)的基礎(chǔ)知識(shí),函數(shù)可以沒(méi)有返回值,沒(méi)有參數(shù),也可以是一個(gè)類的成員,函數(shù)可以定義為模板,即模板函數(shù)。

          21下列語(yǔ)句都是程序運(yùn)行時(shí)的第1條輸出語(yǔ)句,其中一條語(yǔ)句的輸出效果與其他三條語(yǔ)句不同,該語(yǔ)句是( )。

          參考解析:本題考查控制輸出格式,A、B、c選項(xiàng)都會(huì)輸出“12345”,只有D選項(xiàng)輸出“12345”,所以本題答案為D。

          22有三個(gè)關(guān)系R、S和T如下:

          則由關(guān)系R和S得到關(guān)系T的操作是( )。

          A.自然連接B.差C.交D.并

          參考答案:B

          參考解析:關(guān)系T中的元組是R關(guān)系中有而S關(guān)系中沒(méi)有的元組的集合,所以進(jìn)行的是差的運(yùn)算。

          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;

          }

          執(zhí)行這個(gè)程序的輸出結(jié)果是( )。

          A.53B.35C.55D.33

          參考答案:A

          參考解析:本題考查常對(duì)象及常成員函數(shù)及構(gòu)造函數(shù),常象只能凋用常成員函數(shù),所以本題中,對(duì)象v1為普通對(duì)象,執(zhí)行v1.f()后,會(huì)執(zhí)行默認(rèn)構(gòu)造函數(shù),輸出5,對(duì)象v2為常列象,執(zhí)行v2.f()后,會(huì)執(zhí)行常構(gòu)造函數(shù),輸出3。

          24一間宿舍可住多個(gè)學(xué)生,則實(shí)體宿舍和學(xué)生之間的聯(lián)系是(  )。

          A.一對(duì)一B.一對(duì)多C.多對(duì)一D.多對(duì)多

          參考答案:B

          參考解析:因?yàn)橐婚g宿舍可以住多個(gè)學(xué)生即多個(gè)學(xué)生住在一個(gè)宿舍中,但一個(gè)學(xué)生只能住一間宿舍,所以實(shí)體宿舍和學(xué)生之間是一對(duì)多的關(guān)系。

          25下列關(guān)于二叉樹的敘述中,正確的是( )。

          A.葉子結(jié)點(diǎn)總是比度為2的結(jié)點(diǎn)少一個(gè)

          B.葉子結(jié)點(diǎn)總是比度為2的結(jié)點(diǎn)多一個(gè)

          C.葉子結(jié)點(diǎn)數(shù)是度為2的結(jié)點(diǎn)數(shù)的兩倍

          D.度為2的結(jié)點(diǎn)數(shù)是度為1的結(jié)點(diǎn)數(shù)的兩倍

          參考答案:B

          參考解析:根據(jù)二叉樹的基本性質(zhì)3:在任意一棵:二叉樹中,度為0的葉子結(jié)點(diǎn)總是比度為2的結(jié)點(diǎn)多一個(gè)。所以選擇B。

          26有以下語(yǔ)句,則對(duì)a數(shù)組元素的引用不正確的是(0≤i≤9)( )。

          int a[10]={0,1,2,3,4,5,6,7,8,9},*P=a;

          A.a[P-a]B.*(&a[i])C.P[i]D.*(*(a+i))

          參考答案:D

          參考解析:選項(xiàng)D第一層括號(hào)中為數(shù)組a中第i項(xiàng)元素的值,外面再加指針運(yùn)算符沒(méi)有意義。

          27下列程序的運(yùn)行結(jié)果為( )。

          #include

          void print(double A.

          {

          cout<<++a:

          }

          void print(int atint B.

          {

          cout<

          }

          void main()

          {

          print(1.2);

          eout<<””:

          print(3,4);

          }

          A.1.2 34B.2.2 34C.1.2 43D.2.2 43

          參考答案:D

          參考解析:本題考查的是對(duì)重載函數(shù)的掌握,因?yàn)?+a是右結(jié)合的,所以a先自加1再輸出,即為2.2,之后調(diào)用函數(shù)print(int a,int b)輸出h和a,即43。

          28存在定義int a[10],x,* pa;,若pa=&a[0],下列的( )選項(xiàng)和其他3個(gè)選項(xiàng)不是等價(jià)的。

          A.x=*pa;B.x=*(a+1);C.x=*(pa+l)D.x=a[1];

          參考答案:A

          參考解析:本題考查的是數(shù)組和指向數(shù)組的指針之問(wèn)的關(guān)系,選項(xiàng)A中x是被數(shù)組a的第一個(gè)元素賦值,其余的都是被數(shù)組a的第二個(gè)元素賦值。

          29下列敘述中正確的是(  )。

          A.循環(huán)隊(duì)列有隊(duì)頭和隊(duì)尾兩個(gè)指針,因此,循環(huán)隊(duì)列是非線性結(jié)構(gòu)

          B.在循環(huán)隊(duì)列中,只需要隊(duì)頭指針就能反映隊(duì)列中元素的動(dòng)態(tài)變化情況

          C.在循環(huán)隊(duì)列中,只需要隊(duì)尾指針就能反映隊(duì)列中元素的動(dòng)態(tài)變化情況

          D.循環(huán)隊(duì)列中元素的個(gè)數(shù)是由隊(duì)頭指針和隊(duì)尾指針共同決定

          參考答案:D

          參考解析:循環(huán)隊(duì)列有隊(duì)頭和隊(duì)尾兩個(gè)指針,但是循環(huán)隊(duì)列仍是線性結(jié)構(gòu)的,所以A錯(cuò)誤;在循環(huán)隊(duì)列中需要隊(duì)頭指針與隊(duì)尾指針來(lái)共同反映隊(duì)列中元素的動(dòng)態(tài)變化情況,所以B與C錯(cuò)誤。

          30通常拷貝構(gòu)造函數(shù)的參數(shù)是( )。

          A.某個(gè)對(duì)象名

          B.某個(gè)對(duì)象的成員名

          C.某個(gè)對(duì)象的引用名

          D.某個(gè)對(duì)象的指針名

          參考答案:C

          參考解析:復(fù)制初始化構(gòu)造函數(shù)的作用是用一個(gè)已知的對(duì)象來(lái)初始化一個(gè)被創(chuàng)建的同類的對(duì)象,該函數(shù)只有一個(gè)參數(shù),并且是對(duì)同類的某個(gè)對(duì)象的引用。

          31如果在表達(dá)式++x/y中,“++”是作為友元函數(shù)重載的,“/”是作為成員函數(shù)重載的,則該表達(dá)式還可為(   )。

          A.(operator++(x)).operator/(Y)

          B.(operator++(0)).operator/(Y)

          C.operator/((operator++(x,0)),Y)

          D.operator/((operator++(0)),Y)

          參考答案:A

          參考解析: c++中用成員函數(shù)重載++X為:x.oper-ator++(),用友元函數(shù)重載++x為:0perator++(x),用成員函數(shù)重載x/y為:x.operator/(Y),用友元函數(shù)重載x/y為:operator/(X,Y)。

          32一個(gè)函數(shù)功能不太復(fù)雜但要求被頻繁調(diào)用,應(yīng)選用( )。

          A.內(nèi)聯(lián)函數(shù)B.重載函數(shù)C.遞歸函數(shù)D.嵌套函數(shù)

          參考答案:A

          參考解析:本題考查的是內(nèi)聯(lián)函數(shù)的使用,它的引入是為了,解決程序中函數(shù)調(diào)用的效率問(wèn)題,在編譯時(shí),編譯器將程序中出現(xiàn)的內(nèi)聯(lián)函數(shù)的調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)的函數(shù)體來(lái)替換。

          33數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中的核心問(wèn)題是(  )。

          A.數(shù)據(jù)庫(kù)設(shè)計(jì)B.數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)C.數(shù)據(jù)庫(kù)維護(hù)D.數(shù)據(jù)庫(kù)管理員培訓(xùn)

          參考答案:A

          參考解析:數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中的核心問(wèn)題是數(shù)據(jù)庫(kù)的設(shè)計(jì)。

          34有如下程序: Class Base{ publiC:

          int data; };

          Class Derivedl:publiC Base{};

          Class Derived2:proteCted Base{};

          int main(  ) {

          Derivedl dl; Derived2 d2; dl.data=0;//①

          d2.data=0;//② retum 0;

          }

          下列關(guān)于程序編譯結(jié)果的描述中,正確的是(  )。

          A.①②皆無(wú)編譯錯(cuò)誤

          B.①有編譯錯(cuò)誤,②無(wú)編譯錯(cuò)誤

          C.①無(wú)編譯錯(cuò)誤,②有編譯錯(cuò)誤

          D.①②皆有編譯錯(cuò)誤

          參考答案:C

          參考解析:本題考查公用繼承和保護(hù)繼承對(duì)基類成員的訪問(wèn)屬性。在公用繼承中,基類的公用成員和保護(hù)成員在 派生類中保持原有訪問(wèn)屬性,其私有成員仍為基類私有、稿.受保護(hù)繼承中,基類的公用成員和保護(hù)成員在派生類中成了保護(hù)成員,其私有成員仍為基類私有。本題中Derived1公用繼承Base.所以①編譯正確,Derived2保護(hù)繼承Base,所以②編譯不 正確。

          35下列關(guān)于基類和派生類關(guān)系的敘述中,正確的是(  )。

          A.每個(gè)類最多只能有一個(gè)直接基類

          B.派生類中的成員可以訪問(wèn)基類中的任何成員

          C.基類的構(gòu)造函數(shù)必須在派生類的構(gòu)造函數(shù)體中調(diào)用

          D.派生類除了繼承基類的成員,還可以定義新的成員

          參考答案:D

          參考解析:本題考查派生類與基類的關(guān)系,派生類可以有多個(gè)直接基類,而派生類有三種繼承方式,在私有繼承中,派生類的成員并不能訪問(wèn)基類的成員。如果基類中定義了缺省構(gòu)造函數(shù)或根本沒(méi)有定義任何一一個(gè)構(gòu)造函數(shù)時(shí),在派生類構(gòu)造函數(shù)的定義中可以省對(duì)基類構(gòu)造函數(shù)的調(diào)用。所以本題答案為D。

          36結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括( )。

          A.順序結(jié)構(gòu)B.GOT0跳轉(zhuǎn)C.選擇(分支)結(jié)構(gòu)D.重復(fù)(循環(huán))結(jié)構(gòu)

          參考答案:B

          參考解析:1966年Boehm和Jacopini證明了程序沒(méi)計(jì)語(yǔ)言僅僅使用順序、選擇和重復(fù)三種基本控制結(jié)構(gòu)就足以表達(dá)出各種其他形式結(jié)構(gòu)的程序設(shè)計(jì)方法。

          37將E—R圖轉(zhuǎn)換為關(guān)系模式時(shí),實(shí)體和聯(lián)系都可以表示為(  )。

          A.屬性B.鍵C.關(guān)系D.域

          參考答案:C

          參考解析:從E—R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實(shí)體與聯(lián)系都可以表示成關(guān)系,E—R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性。

          38下面是一個(gè)模板聲明的開(kāi)始部分:

          templatedouble…由此可知( )。

          A.這可能是一個(gè)函數(shù)模板的聲明

          B.這可能是一個(gè)類模板的聲明

          C.這既可能是一個(gè)函數(shù)模板的聲明,也可能是一個(gè)類模板的聲明

          D.這肯定是一個(gè)錯(cuò)誤的模板聲明

          參考答案:A

          參考解析:本題考查函數(shù)模板和類模板的基礎(chǔ)知識(shí),從templatedouble這里就可以看出這是·個(gè)函數(shù)模板的聲明。

          39有如下程序:

          #include

          using namespace std;

          class AA{

          int k;

          protected:

          int n;

          void setK(int k){this一>k=k;}

          public:

          void setN(int n){this一>n=n;}

          };

          class BB:public AA{/*類體略*" >

          ;

          int main()

          }

          BB X;

          A n=1;//1

          B setN(2);//2

          C k=3;//3

          D setK(4);//4

          return 0;

          }

          在標(biāo)注號(hào)碼的四條語(yǔ)句中正確的是( )。

          A.1B.2C.3D.4

          參考答案:B

          參考解析:本題考查公用繼承對(duì)基類成員的訪問(wèn)屬性。在公用繼承中,基類的公用成員和保護(hù)成員在派生類中保持原有訪問(wèn)屬性,其私有成員仍為基類私有。所以本題中n、k和setK變?yōu)榱伺缮惖谋Wo(hù)成員,不能直接使用,即1、3、4錯(cuò)誤,所以B選項(xiàng)正確。

          40有如下頭文件:

          int fl();

          static int f2();

          class MA{

          public:

          int f3();

          static int f4();

          };

          在所描述的函數(shù)中,具有隱含的this指針的是( )。

          A.flB.f2C.f3D.f4

          參考答案:C

          參考解析:只有類的非靜態(tài)成員函數(shù)才隱含this指針。其作用域是類內(nèi)部,當(dāng)類的非靜態(tài)成員函數(shù)中訪問(wèn)類的非靜態(tài)成員時(shí),編譯器會(huì)自動(dòng)將對(duì)象本身的地址作為一個(gè)隱含參數(shù)傳遞給函數(shù),而不必一定寫上this。所以本題答案為C。

          二、基本操作題

          41請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾projl下的工程projl,該工程中包含程序文件main.epp,其中有類 Door(“門”)和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR****found ****”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)為:

          打開(kāi)503號(hào)門…門是鎖著的,打不開(kāi)。

          打開(kāi)503號(hào)門的鎖…鎖開(kāi)了。

          打開(kāi)503號(hào)門…門打開(kāi)了。

          打開(kāi)503號(hào)門…門是開(kāi)著的,無(wú)須再開(kāi)門。

          鎖上503號(hào)門…先關(guān)門...門鎖上了。

          注意:只修改每個(gè)“//ERROR***********found **********”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。

          #include

          using namespace std;

          class Door{

          int Bum;//門號(hào)

          bool closed;//true表示門關(guān)著

          bool locked://true表示門鎖著

          public:

          Door(int nHm){

          //ERROR***********found***********

          nun=this一>ann:

          closed=locked=true:

          }

          bool isClosed()const{rehlrn closed;}

          //門關(guān)著時(shí)返回true,否則返回false

          bool isOpened()const{return!closed;}

          //門開(kāi)著時(shí)返回true,否則返回false

          b001 isLocked()const{retum locked;}

          //門鎖著時(shí)返回true,否則返回false

          bool isUnlocked()const{return!locked;}

          //門未鎖時(shí)返回true,否則返回false

          void open(){ //開(kāi)門

          cout<

          //ERROR***********found***********

          if(closed)

          cout<<”門是開(kāi)著的,無(wú)須再開(kāi)門。”;

          else if(10cked)

          cout<<”門是鎖著的,打不開(kāi)。”;

          else{

          closed=false;

          eout<<”門打開(kāi)了。”;

          }

          }

          void close(){//關(guān)門

          cout<

          if(closed)

          cout<<”門是關(guān)著的,無(wú)須再關(guān)門。”;

          else{

          closed=true;

          cout<<”門關(guān)上了.";

          }

          }

          //ERROR************found************

          void lock()const{//鎖門

          cout<

          if(locked)

          cout<<”門是鎖著的,無(wú)須再鎖門。”;

          else{

          if(!closed){

          cout<<”先關(guān)門...”;

          closed=true;

          }

          locked=true:

          cout<<”門鎖上了。”;

          }

          }

          wild unlock(){//開(kāi)鎖

          cout<

          if(!locked)

          cout<<”門沒(méi)有上鎖,無(wú)須再開(kāi)鎖。”;

          else{

          locked=false;

          cout<<”鎖開(kāi)了。”;

          }

          };

          int main(){

          Door door(503);

          door.open();

          door.unlock();

          door.open();

          door.open();

          floor.10ck();

          return 0;

          }

          參考解析:

          (1)this—>num=num;

          (2)if(!closed)

          (3)void lock(){

          三、簡(jiǎn)單應(yīng)用題

          42請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,該工程中包含一個(gè)程序文件 main.cpp,其中有類CPolygon(“多邊形”)、CRectangle(“矩形”)、CTriangle(“三角形”)的定義。請(qǐng)?jiān)跈M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。該程序的正確輸出結(jié)果應(yīng)為: 注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。 #include

          {tout<<——<

          int area(void){return(width *height);}

          class CTriangle:public CPolygon{

          int length;//三角形一邊長(zhǎng) int height;//該邊上的高

          public:

          CTriangle(int l,int h):length(1),height(h){}

          //*********found*********

          int area(void){return(——)/2;}

          };

          int main(){

          CRectangle rect(4,5); CTriangle trgl(4,5);

          //*********found********* ______ *ppolyl,* ppoly2; ppolyl=&rect;

          ppoly2=&trgl;

          ppolyl->printarea(); ppoly2->printarea(); retun 0;

          參考解析:

          (1)virtual int area(void)=0;

          (2)area()

          (3)length*height

          (4)CPolygon

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【計(jì)算機(jī)二級(jí)《C++》考前沖刺試題】相關(guān)文章:

        計(jì)算機(jī)二級(jí)MSOffice考前沖刺試題及答案02-27

        計(jì)算機(jī)二級(jí)考試C++試題03-09

        計(jì)算機(jī)二級(jí)考試C++試題及答案03-27

        2016年9月計(jì)算機(jī)二級(jí)考前沖刺試題03-02

        2016年9月計(jì)算機(jī)二級(jí)考前沖刺試題及答案03-08

        2017計(jì)算機(jī)二級(jí)C++考試試題03-05

        2017計(jì)算機(jī)知識(shí)考前沖刺試題及答案03-10

        2016最新計(jì)算機(jī)二級(jí)C++上機(jī)試題及答案03-03

        2016年9月計(jì)算機(jī)二級(jí)C++上機(jī)考試沖刺試題及答案03-13

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 日韩在线欧美精品一区二区 | 永久中文字幕视频在线 | 最新亚洲日韩精品 | 色综合一区二区在线观看 | 日韩中文字幕第二页 | 日韩在线一区二区 |

            2015年計(jì)算機(jī)二級(jí)《C++》考前沖刺試題

              一、選擇題

            2015年計(jì)算機(jī)二級(jí)《C++》考前沖刺試題

              1假定int類型變量占用兩個(gè)字節(jié),其有定義int x[10]={0,2,4};,則數(shù)組x在內(nèi)存中所占字節(jié)數(shù)是( )。

              A.3B.6C.10D.20

              參考答案:D

              參考解析:x數(shù)組共有10個(gè)元素,在花括號(hào)內(nèi)只提供3個(gè)初值,這表示只給前面的3個(gè)成員賦值,后7個(gè)元素的值為0,所以,一共有20個(gè)字節(jié)。

              2有兩個(gè)關(guān)系R,S如下:

              由關(guān)系R通過(guò)運(yùn)算得到關(guān)系s,則所使用的運(yùn)算為(  )。

              A.選擇B.投影C.插入D.連接

              參考答案:B

              參考解析:投影運(yùn)算是指對(duì)于關(guān)系內(nèi)的域指定可引入新的運(yùn)算。本題中s是在原有關(guān)系R的內(nèi)部進(jìn)行的,是由R中原有的那些域的列所組成的關(guān)系。所以選擇B。

              3對(duì)于循環(huán)隊(duì)列,下列敘述中正確的是( )。

              A.隊(duì)頭指針是固定不變的

              B.隊(duì)頭指針一定大于隊(duì)尾指針

              C.隊(duì)頭指針一定小于隊(duì)尾指針

              D.隊(duì)頭指針可以大于隊(duì)尾指針,也可以小于隊(duì)尾指針

              參考答案:D

              參考解析:循環(huán)隊(duì)列的隊(duì)頭指針與隊(duì)尾指針都不是固定的,隨著入隊(duì)與出隊(duì)操作要進(jìn)行變化。因?yàn)槭茄h(huán)利用的隊(duì)列結(jié)構(gòu)所以隊(duì)頭指針有時(shí)可能大于隊(duì)尾指針有時(shí)也可能小于隊(duì)尾指針。

              4下列有關(guān)函數(shù)重載的敘述中,錯(cuò)誤的是(  )。

              A.函數(shù)重載就是用相同的函數(shù)名定義多個(gè)函數(shù)

              B.重載函數(shù)的參數(shù)列表必須不同

              C.重載函數(shù)的返回值類型必須不同

              D.重載函數(shù)的參數(shù)可以帶有默認(rèn)值

              參考答案:C

              參考解析:所謂函數(shù)重載是指同一個(gè)函數(shù)名可以對(duì)應(yīng)著多個(gè)函數(shù)的實(shí)現(xiàn)。每種實(shí)現(xiàn)對(duì)應(yīng)著一個(gè)函數(shù)體,這些函數(shù)的名字相同,但是函數(shù)參數(shù)的類型不同,還允許參數(shù)的個(gè)數(shù)不 同,但不能只有函數(shù)的返回值類型不同而參數(shù)的個(gè)數(shù)和類型相同的重載。所以本題答案為c。

              5有三個(gè)關(guān)系R S和T如下.

              則由關(guān)系R和S得到關(guān)系T的操作是( )。

              A.自然連接B.并C.交D.差

              參考答案:D

              參考解析:關(guān)系T中的元組是關(guān)系R中有而關(guān)系s中沒(méi)有的元組的集合,即從關(guān)系R中除去與關(guān)系s中相同元組后得到的關(guān)系T。所以做的是差的運(yùn)算。

              6下面關(guān)于類和對(duì)象的描述中,錯(cuò)誤的是( )。

              A.類就是C語(yǔ)言中的結(jié)構(gòu)體類型,對(duì)象就是C語(yǔ)言中的結(jié)構(gòu)體變量

              B.類和對(duì)象之間的關(guān)系是抽象和具體的關(guān)系

              C.對(duì)象是類的實(shí)例,一個(gè)對(duì)象必須屬于一個(gè)已知的類

              D.類是具有共同行為的若干對(duì)象的統(tǒng)一描述體

              參考答案:A

              參考解析:在c++語(yǔ)言中,類和結(jié)構(gòu)體有本質(zhì)區(qū)別,類中包含數(shù)據(jù)及操作函數(shù),而結(jié)構(gòu)體只包含有數(shù)據(jù)。

              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;

              }

              執(zhí)行這個(gè)程序的輸出結(jié)果是(  )。

              A.3B.ConstruCtor

              destruCtorC.Copy ConstruCtor

              destruCtorD.3

              destruCtor

              參考答案:D

              參考解析:本題考查默認(rèn)構(gòu)造函數(shù)和帶參數(shù)的構(gòu)造函數(shù)以及析構(gòu)函數(shù),本題中定義了一個(gè)對(duì)象A(3),對(duì)象帶著參數(shù),所以執(zhí)行帶參數(shù)的構(gòu)造函數(shù).輸出3,然后執(zhí)行析構(gòu)溺數(shù),輸出destructor。所以本題答案為D。

              8有如下函數(shù)模板:

              template

              T east(U u)i return u;}

              其功能是將U類型數(shù)據(jù)轉(zhuǎn)換為T類型數(shù)據(jù)。已知i為int型變量,下列對(duì)模板函數(shù)cast的調(diào)用中正確的是(  )。

              A.cast(i);B.cast<>(i);C.east(i);D.east(i);

              參考答案:D

              參考解析:本題考查函數(shù)模板的基本運(yùn)用,屬于基礎(chǔ)知識(shí)。函數(shù)模板實(shí)際上是建立一個(gè)通用函數(shù),其函數(shù)類型和形參類型不具體指定,用一個(gè)虛擬的類型代表,這個(gè)通用函數(shù)就是函數(shù)模板。函數(shù)模板可以設(shè)定默認(rèn)參數(shù),這樣在調(diào)用模板函數(shù)時(shí)就可以省實(shí)參,函數(shù)模板的實(shí)例就是一個(gè)函數(shù)的定義。所以本題答案為D。

              9下面程序的運(yùn)行結(jié)果是(  )。

              #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

              參考答案:D

              參考解析:本題考查的是指針和引用,函數(shù)fun完成把x和Y互換的操作。

              10在C++語(yǔ)言中,打開(kāi)一個(gè)文件就是將這個(gè)文件與一個(gè)( )建立關(guān)聯(lián)。

              A.流B.類C.結(jié)構(gòu)D.對(duì)象

              參考答案:A

              參考解析:c++的V0系統(tǒng)是通過(guò)一一種稱為流的機(jī)制來(lái)實(shí)現(xiàn)文件和控制臺(tái)的I/0操作的。簡(jiǎn)單地說(shuō),在C++中,輸入/輸出操作是通過(guò)流來(lái)完成的。而文件流以磁盤文件及其他可按文件方式進(jìn)行管理的外部設(shè)備為輸入/輸出對(duì)象。每個(gè)文件流都應(yīng)當(dāng)與一個(gè)打開(kāi)的文件相聯(lián)系;關(guān)閉卟文件就是取消這種聯(lián)系。

              11下列語(yǔ)句中,錯(cuò)誤的是( )。

              A.const int buffer:256;

              B.const int temp;

              C.const double*point;

              D.const double*rt=new double(5.5);

              參考答案:B

              參考解析:eonst是一個(gè)C++語(yǔ)言的關(guān)鍵字,它限定一個(gè)變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性。限定符聲明變量只能被讀,必須初始化:,B選項(xiàng)中沒(méi)有初始化,C選項(xiàng)為指向常量的指針,定義時(shí)初始化與否均可,如果是const*double point形式,則為常指針,必須在定義時(shí)進(jìn)行初始化,A、c、D都正確。

              12下列程序的輸出結(jié)果為( )。

              #include

              void main()

              {

              char*a[]={”hell0”,”the”,”world”};

              char** pa = a:

              pa++;

              cout<<*pa<

              }

              A.helloB.theC.worldD.hellotheworld

              參考答案:B

              參考解析:本題主要考查的是指針數(shù)組和指向指針的指針之間的關(guān)系,其中a是指針數(shù)組,pa是指向指針數(shù)組行的指針,所以pa自加l相當(dāng)于指向下一行。

              13關(guān)于運(yùn)算符重載,下列表述中正確的是(  )。

              A.C++已有的任何運(yùn)算符都可以重載

              B.運(yùn)算符函數(shù)的返回類型不能聲明為基本數(shù)據(jù)類型

              C.在類型轉(zhuǎn)換符函數(shù)的定義中不需要聲明返回類型

              D.可以通過(guò)運(yùn)算符重載來(lái)創(chuàng)建C++中原來(lái)沒(méi)有的運(yùn)算符

              參考答案:C

              參考解析:重載運(yùn)算符的規(guī)則如下:①c++不允許用戶自已定義新的運(yùn)算符,只能對(duì)已有的c++運(yùn)算符進(jìn)行重載;②c++不能重載的運(yùn)算符只有5 個(gè);③重載不能改變運(yùn)算符運(yùn)算對(duì)象的個(gè)數(shù);④重載不能改變運(yùn)算符的優(yōu)先級(jí)和結(jié)合性;⑤重載運(yùn)算符的函數(shù)不能有默認(rèn)的參數(shù);⑥重載的運(yùn)算符必須和用戶定義的自定義類型的對(duì)象一起使用.至少應(yīng)有一個(gè)是類對(duì)象,即不允許參數(shù)全部是c++的標(biāo)準(zhǔn)類型。故本題答案為c。

              14可以用P.a的形式訪問(wèn)派生類對(duì)象P的基類成員a,其中a是( )。

              A.私有繼承的公有成員

              B.公有繼承的私有成員

              C.公有繼承的保護(hù)成員

              D.公有繼承的公有成員

              參考答案:D

              參考解析:只有公有繼承的公有成員才能被派生類的對(duì)象直接訪問(wèn),其他的情況都會(huì)因?yàn)樵L問(wèn)權(quán)限問(wèn)題產(chǎn)生錯(cuò)誤。

              15在下列原型所示的C++函數(shù)中,按“傳值”方式傳遞參數(shù)的是(  )。

              A.void fl(int X);B.void t2(int*X);C.void f3(Const int*X);D.void f4(int&x);

              參考答案:A

              參考解析:函數(shù)參數(shù)的3種傳遞方式:①將變量名作為形參和實(shí)參,即傳值方式;②傳遞變量指針;③引用形參。其中B、C選項(xiàng)都是傳遞變量指針,D選項(xiàng)為引用形參,所以本題答案為A。

              16以下關(guān)鍵字不能用來(lái)聲明類的訪問(wèn)權(quán)限的是(  )。

              A.publicB.staticC.protectedD.private

              參考答案:B

              參考解析:類的成員訪問(wèn)權(quán)限有3種:public(公用)、protected(保護(hù))、private(私有)。

              17下面程序的運(yùn)行結(jié)果為( )。

              #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

              參考解析:本題考查考生對(duì)拷貝構(gòu)造函數(shù)的掌握。因?yàn)?+運(yùn)算是右結(jié)合的,所以在使用a對(duì)b賦值時(shí),b的nnm變?yōu)?,而a的nnm變?yōu)?(先賦值再自加)。

              18下面是重載為非成員函數(shù)的運(yùn)算符的函數(shù)原型,其中錯(cuò)誤的是( )。

              A.Fraction operator+(Fraction,F(xiàn)raction);

              B.Fraction operator一(Fraction);

              C.Fraction&operator=(Fraction&,F(xiàn)raction);

              D.Fraction&operator+=(Fraction&,F(xiàn)raction);

              參考答案:C

              參考解析:本題考查四種運(yùn)算符作為非成員函數(shù)的重載的使用方法,根據(jù)重載規(guī)則,本題答案為c,c項(xiàng)正確原型為:Fraction operator=(Fraction&)。

              19下列語(yǔ)句中錯(cuò)誤的是( )。

              A.Const int a;

              B.Const int a=10;

              C.Const int * point=0;

              D.Const int * point=new int(10);

              參考答案:A

              參考解析:const是一個(gè)c++語(yǔ)言的關(guān)鍵字,它限定一個(gè)變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性。限定符聲明變量照能被讀,必須初始化。A選項(xiàng)沒(méi)有初始化,B、C、D選項(xiàng)都正確。

              20下列關(guān)于函數(shù)的描述中,錯(cuò)誤的是( )。

              A.函數(shù)可以沒(méi)有返回值

              B.函數(shù)可以沒(méi)有參數(shù)

              C.函數(shù)可以是一個(gè)類的成員

              D.函數(shù)不能被定義為模板

              參考答案:D

              參考解析:本題考查函數(shù)的基礎(chǔ)知識(shí),函數(shù)可以沒(méi)有返回值,沒(méi)有參數(shù),也可以是一個(gè)類的成員,函數(shù)可以定義為模板,即模板函數(shù)。

              21下列語(yǔ)句都是程序運(yùn)行時(shí)的第1條輸出語(yǔ)句,其中一條語(yǔ)句的輸出效果與其他三條語(yǔ)句不同,該語(yǔ)句是( )。

              參考解析:本題考查控制輸出格式,A、B、c選項(xiàng)都會(huì)輸出“12345”,只有D選項(xiàng)輸出“12345”,所以本題答案為D。

              22有三個(gè)關(guān)系R、S和T如下:

              則由關(guān)系R和S得到關(guān)系T的操作是( )。

              A.自然連接B.差C.交D.并

              參考答案:B

              參考解析:關(guān)系T中的元組是R關(guān)系中有而S關(guān)系中沒(méi)有的元組的集合,所以進(jìn)行的是差的運(yùn)算。

              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;

              }

              執(zhí)行這個(gè)程序的輸出結(jié)果是( )。

              A.53B.35C.55D.33

              參考答案:A

              參考解析:本題考查常對(duì)象及常成員函數(shù)及構(gòu)造函數(shù),常象只能凋用常成員函數(shù),所以本題中,對(duì)象v1為普通對(duì)象,執(zhí)行v1.f()后,會(huì)執(zhí)行默認(rèn)構(gòu)造函數(shù),輸出5,對(duì)象v2為常列象,執(zhí)行v2.f()后,會(huì)執(zhí)行常構(gòu)造函數(shù),輸出3。

              24一間宿舍可住多個(gè)學(xué)生,則實(shí)體宿舍和學(xué)生之間的聯(lián)系是(  )。

              A.一對(duì)一B.一對(duì)多C.多對(duì)一D.多對(duì)多

              參考答案:B

              參考解析:因?yàn)橐婚g宿舍可以住多個(gè)學(xué)生即多個(gè)學(xué)生住在一個(gè)宿舍中,但一個(gè)學(xué)生只能住一間宿舍,所以實(shí)體宿舍和學(xué)生之間是一對(duì)多的關(guān)系。

              25下列關(guān)于二叉樹的敘述中,正確的是( )。

              A.葉子結(jié)點(diǎn)總是比度為2的結(jié)點(diǎn)少一個(gè)

              B.葉子結(jié)點(diǎn)總是比度為2的結(jié)點(diǎn)多一個(gè)

              C.葉子結(jié)點(diǎn)數(shù)是度為2的結(jié)點(diǎn)數(shù)的兩倍

              D.度為2的結(jié)點(diǎn)數(shù)是度為1的結(jié)點(diǎn)數(shù)的兩倍

              參考答案:B

              參考解析:根據(jù)二叉樹的基本性質(zhì)3:在任意一棵:二叉樹中,度為0的葉子結(jié)點(diǎn)總是比度為2的結(jié)點(diǎn)多一個(gè)。所以選擇B。

              26有以下語(yǔ)句,則對(duì)a數(shù)組元素的引用不正確的是(0≤i≤9)( )。

              int a[10]={0,1,2,3,4,5,6,7,8,9},*P=a;

              A.a[P-a]B.*(&a[i])C.P[i]D.*(*(a+i))

              參考答案:D

              參考解析:選項(xiàng)D第一層括號(hào)中為數(shù)組a中第i項(xiàng)元素的值,外面再加指針運(yùn)算符沒(méi)有意義。

              27下列程序的運(yùn)行結(jié)果為( )。

              #include

              void print(double A.

              {

              cout<<++a:

              }

              void print(int atint B.

              {

              cout<

              }

              void main()

              {

              print(1.2);

              eout<<””:

              print(3,4);

              }

              A.1.2 34B.2.2 34C.1.2 43D.2.2 43

              參考答案:D

              參考解析:本題考查的是對(duì)重載函數(shù)的掌握,因?yàn)?+a是右結(jié)合的,所以a先自加1再輸出,即為2.2,之后調(diào)用函數(shù)print(int a,int b)輸出h和a,即43。

              28存在定義int a[10],x,* pa;,若pa=&a[0],下列的( )選項(xiàng)和其他3個(gè)選項(xiàng)不是等價(jià)的。

              A.x=*pa;B.x=*(a+1);C.x=*(pa+l)D.x=a[1];

              參考答案:A

              參考解析:本題考查的是數(shù)組和指向數(shù)組的指針之問(wèn)的關(guān)系,選項(xiàng)A中x是被數(shù)組a的第一個(gè)元素賦值,其余的都是被數(shù)組a的第二個(gè)元素賦值。

              29下列敘述中正確的是(  )。

              A.循環(huán)隊(duì)列有隊(duì)頭和隊(duì)尾兩個(gè)指針,因此,循環(huán)隊(duì)列是非線性結(jié)構(gòu)

              B.在循環(huán)隊(duì)列中,只需要隊(duì)頭指針就能反映隊(duì)列中元素的動(dòng)態(tài)變化情況

              C.在循環(huán)隊(duì)列中,只需要隊(duì)尾指針就能反映隊(duì)列中元素的動(dòng)態(tài)變化情況

              D.循環(huán)隊(duì)列中元素的個(gè)數(shù)是由隊(duì)頭指針和隊(duì)尾指針共同決定

              參考答案:D

              參考解析:循環(huán)隊(duì)列有隊(duì)頭和隊(duì)尾兩個(gè)指針,但是循環(huán)隊(duì)列仍是線性結(jié)構(gòu)的,所以A錯(cuò)誤;在循環(huán)隊(duì)列中需要隊(duì)頭指針與隊(duì)尾指針來(lái)共同反映隊(duì)列中元素的動(dòng)態(tài)變化情況,所以B與C錯(cuò)誤。

              30通常拷貝構(gòu)造函數(shù)的參數(shù)是( )。

              A.某個(gè)對(duì)象名

              B.某個(gè)對(duì)象的成員名

              C.某個(gè)對(duì)象的引用名

              D.某個(gè)對(duì)象的指針名

              參考答案:C

              參考解析:復(fù)制初始化構(gòu)造函數(shù)的作用是用一個(gè)已知的對(duì)象來(lái)初始化一個(gè)被創(chuàng)建的同類的對(duì)象,該函數(shù)只有一個(gè)參數(shù),并且是對(duì)同類的某個(gè)對(duì)象的引用。

              31如果在表達(dá)式++x/y中,“++”是作為友元函數(shù)重載的,“/”是作為成員函數(shù)重載的,則該表達(dá)式還可為(   )。

              A.(operator++(x)).operator/(Y)

              B.(operator++(0)).operator/(Y)

              C.operator/((operator++(x,0)),Y)

              D.operator/((operator++(0)),Y)

              參考答案:A

              參考解析: c++中用成員函數(shù)重載++X為:x.oper-ator++(),用友元函數(shù)重載++x為:0perator++(x),用成員函數(shù)重載x/y為:x.operator/(Y),用友元函數(shù)重載x/y為:operator/(X,Y)。

              32一個(gè)函數(shù)功能不太復(fù)雜但要求被頻繁調(diào)用,應(yīng)選用( )。

              A.內(nèi)聯(lián)函數(shù)B.重載函數(shù)C.遞歸函數(shù)D.嵌套函數(shù)

              參考答案:A

              參考解析:本題考查的是內(nèi)聯(lián)函數(shù)的使用,它的引入是為了,解決程序中函數(shù)調(diào)用的效率問(wèn)題,在編譯時(shí),編譯器將程序中出現(xiàn)的內(nèi)聯(lián)函數(shù)的調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)的函數(shù)體來(lái)替換。

              33數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中的核心問(wèn)題是(  )。

              A.數(shù)據(jù)庫(kù)設(shè)計(jì)B.數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)C.數(shù)據(jù)庫(kù)維護(hù)D.數(shù)據(jù)庫(kù)管理員培訓(xùn)

              參考答案:A

              參考解析:數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中的核心問(wèn)題是數(shù)據(jù)庫(kù)的設(shè)計(jì)。

              34有如下程序: Class Base{ publiC:

              int data; };

              Class Derivedl:publiC Base{};

              Class Derived2:proteCted Base{};

              int main(  ) {

              Derivedl dl; Derived2 d2; dl.data=0;//①

              d2.data=0;//② retum 0;

              }

              下列關(guān)于程序編譯結(jié)果的描述中,正確的是(  )。

              A.①②皆無(wú)編譯錯(cuò)誤

              B.①有編譯錯(cuò)誤,②無(wú)編譯錯(cuò)誤

              C.①無(wú)編譯錯(cuò)誤,②有編譯錯(cuò)誤

              D.①②皆有編譯錯(cuò)誤

              參考答案:C

              參考解析:本題考查公用繼承和保護(hù)繼承對(duì)基類成員的訪問(wèn)屬性。在公用繼承中,基類的公用成員和保護(hù)成員在 派生類中保持原有訪問(wèn)屬性,其私有成員仍為基類私有、稿.受保護(hù)繼承中,基類的公用成員和保護(hù)成員在派生類中成了保護(hù)成員,其私有成員仍為基類私有。本題中Derived1公用繼承Base.所以①編譯正確,Derived2保護(hù)繼承Base,所以②編譯不 正確。

              35下列關(guān)于基類和派生類關(guān)系的敘述中,正確的是(  )。

              A.每個(gè)類最多只能有一個(gè)直接基類

              B.派生類中的成員可以訪問(wèn)基類中的任何成員

              C.基類的構(gòu)造函數(shù)必須在派生類的構(gòu)造函數(shù)體中調(diào)用

              D.派生類除了繼承基類的成員,還可以定義新的成員

              參考答案:D

              參考解析:本題考查派生類與基類的關(guān)系,派生類可以有多個(gè)直接基類,而派生類有三種繼承方式,在私有繼承中,派生類的成員并不能訪問(wèn)基類的成員。如果基類中定義了缺省構(gòu)造函數(shù)或根本沒(méi)有定義任何一一個(gè)構(gòu)造函數(shù)時(shí),在派生類構(gòu)造函數(shù)的定義中可以省對(duì)基類構(gòu)造函數(shù)的調(diào)用。所以本題答案為D。

              36結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括( )。

              A.順序結(jié)構(gòu)B.GOT0跳轉(zhuǎn)C.選擇(分支)結(jié)構(gòu)D.重復(fù)(循環(huán))結(jié)構(gòu)

              參考答案:B

              參考解析:1966年Boehm和Jacopini證明了程序沒(méi)計(jì)語(yǔ)言僅僅使用順序、選擇和重復(fù)三種基本控制結(jié)構(gòu)就足以表達(dá)出各種其他形式結(jié)構(gòu)的程序設(shè)計(jì)方法。

              37將E—R圖轉(zhuǎn)換為關(guān)系模式時(shí),實(shí)體和聯(lián)系都可以表示為(  )。

              A.屬性B.鍵C.關(guān)系D.域

              參考答案:C

              參考解析:從E—R圖到關(guān)系模式的轉(zhuǎn)換是比較直接的,實(shí)體與聯(lián)系都可以表示成關(guān)系,E—R圖中屬性也可以轉(zhuǎn)換成關(guān)系的屬性。

              38下面是一個(gè)模板聲明的開(kāi)始部分:

              templatedouble…由此可知( )。

              A.這可能是一個(gè)函數(shù)模板的聲明

              B.這可能是一個(gè)類模板的聲明

              C.這既可能是一個(gè)函數(shù)模板的聲明,也可能是一個(gè)類模板的聲明

              D.這肯定是一個(gè)錯(cuò)誤的模板聲明

              參考答案:A

              參考解析:本題考查函數(shù)模板和類模板的基礎(chǔ)知識(shí),從templatedouble這里就可以看出這是·個(gè)函數(shù)模板的聲明。

              39有如下程序:

              #include

              using namespace std;

              class AA{

              int k;

              protected:

              int n;

              void setK(int k){this一>k=k;}

              public:

              void setN(int n){this一>n=n;}

              };

              class BB:public AA{/*類體略*" >

              ;

              int main()

              }

              BB X;

              A n=1;//1

              B setN(2);//2

              C k=3;//3

              D setK(4);//4

              return 0;

              }

              在標(biāo)注號(hào)碼的四條語(yǔ)句中正確的是( )。

              A.1B.2C.3D.4

              參考答案:B

              參考解析:本題考查公用繼承對(duì)基類成員的訪問(wèn)屬性。在公用繼承中,基類的公用成員和保護(hù)成員在派生類中保持原有訪問(wèn)屬性,其私有成員仍為基類私有。所以本題中n、k和setK變?yōu)榱伺缮惖谋Wo(hù)成員,不能直接使用,即1、3、4錯(cuò)誤,所以B選項(xiàng)正確。

              40有如下頭文件:

              int fl();

              static int f2();

              class MA{

              public:

              int f3();

              static int f4();

              };

              在所描述的函數(shù)中,具有隱含的this指針的是( )。

              A.flB.f2C.f3D.f4

              參考答案:C

              參考解析:只有類的非靜態(tài)成員函數(shù)才隱含this指針。其作用域是類內(nèi)部,當(dāng)類的非靜態(tài)成員函數(shù)中訪問(wèn)類的非靜態(tài)成員時(shí),編譯器會(huì)自動(dòng)將對(duì)象本身的地址作為一個(gè)隱含參數(shù)傳遞給函數(shù),而不必一定寫上this。所以本題答案為C。

              二、基本操作題

              41請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾projl下的工程projl,該工程中包含程序文件main.epp,其中有類 Door(“門”)和主函數(shù)main的定義。程序中位于每個(gè)“//ERROR****found ****”之后的一行語(yǔ)句有錯(cuò)誤,請(qǐng)加以改正。改正后程序的輸出結(jié)果應(yīng)為:

              打開(kāi)503號(hào)門…門是鎖著的,打不開(kāi)。

              打開(kāi)503號(hào)門的鎖…鎖開(kāi)了。

              打開(kāi)503號(hào)門…門打開(kāi)了。

              打開(kāi)503號(hào)門…門是開(kāi)著的,無(wú)須再開(kāi)門。

              鎖上503號(hào)門…先關(guān)門...門鎖上了。

              注意:只修改每個(gè)“//ERROR***********found **********”下的那一行,不要改動(dòng)程序中的其他內(nèi)容。

              #include

              using namespace std;

              class Door{

              int Bum;//門號(hào)

              bool closed;//true表示門關(guān)著

              bool locked://true表示門鎖著

              public:

              Door(int nHm){

              //ERROR***********found***********

              nun=this一>ann:

              closed=locked=true:

              }

              bool isClosed()const{rehlrn closed;}

              //門關(guān)著時(shí)返回true,否則返回false

              bool isOpened()const{return!closed;}

              //門開(kāi)著時(shí)返回true,否則返回false

              b001 isLocked()const{retum locked;}

              //門鎖著時(shí)返回true,否則返回false

              bool isUnlocked()const{return!locked;}

              //門未鎖時(shí)返回true,否則返回false

              void open(){ //開(kāi)門

              cout<

              //ERROR***********found***********

              if(closed)

              cout<<”門是開(kāi)著的,無(wú)須再開(kāi)門。”;

              else if(10cked)

              cout<<”門是鎖著的,打不開(kāi)。”;

              else{

              closed=false;

              eout<<”門打開(kāi)了。”;

              }

              }

              void close(){//關(guān)門

              cout<

              if(closed)

              cout<<”門是關(guān)著的,無(wú)須再關(guān)門。”;

              else{

              closed=true;

              cout<<”門關(guān)上了.";

              }

              }

              //ERROR************found************

              void lock()const{//鎖門

              cout<

              if(locked)

              cout<<”門是鎖著的,無(wú)須再鎖門。”;

              else{

              if(!closed){

              cout<<”先關(guān)門...”;

              closed=true;

              }

              locked=true:

              cout<<”門鎖上了。”;

              }

              }

              wild unlock(){//開(kāi)鎖

              cout<

              if(!locked)

              cout<<”門沒(méi)有上鎖,無(wú)須再開(kāi)鎖。”;

              else{

              locked=false;

              cout<<”鎖開(kāi)了。”;

              }

              };

              int main(){

              Door door(503);

              door.open();

              door.unlock();

              door.open();

              door.open();

              floor.10ck();

              return 0;

              }

              參考解析:

              (1)this—>num=num;

              (2)if(!closed)

              (3)void lock(){

              三、簡(jiǎn)單應(yīng)用題

              42請(qǐng)使用VC6或使用【答題】菜單打開(kāi)考生文件夾proj2下的工程proj2,該工程中包含一個(gè)程序文件 main.cpp,其中有類CPolygon(“多邊形”)、CRectangle(“矩形”)、CTriangle(“三角形”)的定義。請(qǐng)?jiān)跈M線處填寫適當(dāng)?shù)拇a并刪除橫線,以實(shí)現(xiàn)上述類定義。該程序的正確輸出結(jié)果應(yīng)為: 注意:只能在橫線處填寫適當(dāng)?shù)拇a,不要改動(dòng)程序中的其他內(nèi)容,也不要?jiǎng)h除或移動(dòng)“//****found****”。 #include

              {tout<<——<

              int area(void){return(width *height);}

              class CTriangle:public CPolygon{

              int length;//三角形一邊長(zhǎng) int height;//該邊上的高

              public:

              CTriangle(int l,int h):length(1),height(h){}

              //*********found*********

              int area(void){return(——)/2;}

              };

              int main(){

              CRectangle rect(4,5); CTriangle trgl(4,5);

              //*********found********* ______ *ppolyl,* ppoly2; ppolyl=&rect;

              ppoly2=&trgl;

              ppolyl->printarea(); ppoly2->printarea(); retun 0;

              參考解析:

              (1)virtual int area(void)=0;

              (2)area()

              (3)length*height

              (4)CPolygon