<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>

            計算機二級《C++》考前沖刺試題

            時間:2024-09-29 02:38:51 計算機學歷 我要投稿
            • 相關推薦

            2015年計算機二級《C++》考前沖刺試題

              一、選擇題

            2015年計算機二級《C++》考前沖刺試題

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

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

              參考答案:D

              參考解析: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.隊頭指針可以大于隊尾指針,也可以小于隊尾指針

              參考答案:D

              參考解析:循環隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進行變化。因為是循環利用的隊列結構所以隊頭指針有時可能大于隊尾指針有時也可能小于隊尾指針。

              4下列有關函數重載的敘述中,錯誤的是(  )。

              A.函數重載就是用相同的函數名定義多個函數

              B.重載函數的參數列表必須不同

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

              D.重載函數的參數可以帶有默認值

              參考答案:C

              參考解析:所謂函數重載是指同一個函數名可以對應著多個函數的實現。每種實現對應著一個函數體,這些函數的名字相同,但是函數參數的類型不同,還允許參數的個數不 同,但不能只有函數的返回值類型不同而參數的個數和類型相同的重載。所以本題答案為c。

              5有三個關系R S和T如下.

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

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

              參考答案: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

              參考答案:D

              參考解析:本題考查默認構造函數和帶參數的構造函數以及析構函數,本題中定義了一個對象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

              參考解析:本題考查函數模板的基本運用,屬于基礎知識。函數模板實際上是建立一個通用函數,其函數類型和形參類型不具體指定,用一個虛擬的類型代表,這個通用函數就是函數模板。函數模板可以設定默認參數,這樣在調用模板函數時就可以省實參,函數模板的實例就是一個函數的定義。所以本題答案為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

              參考答案:D

              參考解析:本題考查的是指針和引用,函數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.公有繼承的公有成員

              參考答案: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.函數不能被定義為模板

              參考答案:D

              參考解析:本題考查函數的基礎知識,函數可以沒有返回值,沒有參數,也可以是一個類的成員,函數可以定義為模板,即模板函數。

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

              參考解析:本題考查控制輸出格式,A、B、c選項都會輸出“12345”,只有D選項輸出“12345”,所以本題答案為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。

              24一間宿舍可住多個學生,則實體宿舍和學生之間的聯系是(  )。

              A.一對一B.一對多C.多對一D.多對多

              參考答案:B

              參考解析:因為一間宿舍可以住多個學生即多個學生住在一個宿舍中,但一個學生只能住一間宿舍,所以實體宿舍和學生之間是一對多的關系。

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

              A.葉子結點總是比度為2的結點少一個

              B.葉子結點總是比度為2的結點多一個

              C.葉子結點數是度為2的結點數的兩倍

              D.度為2的結點數是度為1的結點數的兩倍

              參考答案:B

              參考解析:根據二叉樹的基本性質3:在任意一棵:二叉樹中,度為0的葉子結點總是比度為2的結點多一個。所以選擇B。

              26有以下語句,則對a數組元素的引用不正確的是(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

              參考解析:選項D第一層括號中為數組a中第i項元素的值,外面再加指針運算符沒有意義。

              27下列程序的運行結果為( )。

              #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

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

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

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

              參考答案:A

              參考解析:本題考查的是數組和指向數組的指針之問的關系,選項A中x是被數組a的第一個元素賦值,其余的都是被數組a的第二個元素賦值。

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

              A.循環隊列有隊頭和隊尾兩個指針,因此,循環隊列是非線性結構

              B.在循環隊列中,只需要隊頭指針就能反映隊列中元素的動態變化情況

              C.在循環隊列中,只需要隊尾指針就能反映隊列中元素的動態變化情況

              D.循環隊列中元素的個數是由隊頭指針和隊尾指針共同決定

              參考答案:D

              參考解析:循環隊列有隊頭和隊尾兩個指針,但是循環隊列仍是線性結構的,所以A錯誤;在循環隊列中需要隊頭指針與隊尾指針來共同反映隊列中元素的動態變化情況,所以B與C錯誤。

              30通常拷貝構造函數的參數是( )。

              A.某個對象名

              B.某個對象的成員名

              C.某個對象的引用名

              D.某個對象的指針名

              參考答案:C

              參考解析:復制初始化構造函數的作用是用一個已知的對象來初始化一個被創建的同類的對象,該函數只有一個參數,并且是對同類的某個對象的引用。

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

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

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

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

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

              參考答案:A

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

              32一個函數功能不太復雜但要求被頻繁調用,應選用( )。

              A.內聯函數B.重載函數C.遞歸函數D.嵌套函數

              參考答案:A

              參考解析:本題考查的是內聯函數的使用,它的引入是為了,解決程序中函數調用的效率問題,在編譯時,編譯器將程序中出現的內聯函數的調用表達式用內聯函數的函數體來替換。

              33數據庫應用系統中的核心問題是(  )。

              A.數據庫設計B.數據庫系統設計C.數據庫維護D.數據庫管理員培訓

              參考答案:A

              參考解析:數據庫應用系統中的核心問題是數據庫的設計。

              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;

              }

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

              A.①②皆無編譯錯誤

              B.①有編譯錯誤,②無編譯錯誤

              C.①無編譯錯誤,②有編譯錯誤

              D.①②皆有編譯錯誤

              參考答案:C

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

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

              A.每個類最多只能有一個直接基類

              B.派生類中的成員可以訪問基類中的任何成員

              C.基類的構造函數必須在派生類的構造函數體中調用

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

              參考答案:D

              參考解析:本題考查派生類與基類的關系,派生類可以有多個直接基類,而派生類有三種繼承方式,在私有繼承中,派生類的成員并不能訪問基類的成員。如果基類中定義了缺省構造函數或根本沒有定義任何一一個構造函數時,在派生類構造函數的定義中可以省對基類構造函數的調用。所以本題答案為D。

              36結構化程序所要求的基本結構不包括( )。

              A.順序結構B.GOT0跳轉C.選擇(分支)結構D.重復(循環)結構

              參考答案:B

              參考解析:1966年Boehm和Jacopini證明了程序沒計語言僅僅使用順序、選擇和重復三種基本控制結構就足以表達出各種其他形式結構的程序設計方法。

              37將E—R圖轉換為關系模式時,實體和聯系都可以表示為(  )。

              A.屬性B.鍵C.關系D.域

              參考答案:C

              參考解析:從E—R圖到關系模式的轉換是比較直接的,實體與聯系都可以表示成關系,E—R圖中屬性也可以轉換成關系的屬性。

              38下面是一個模板聲明的開始部分:

              templatedouble…由此可知( )。

              A.這可能是一個函數模板的聲明

              B.這可能是一個類模板的聲明

              C.這既可能是一個函數模板的聲明,也可能是一個類模板的聲明

              D.這肯定是一個錯誤的模板聲明

              參考答案:A

              參考解析:本題考查函數模板和類模板的基礎知識,從templatedouble這里就可以看出這是·個函數模板的聲明。

              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;

              }

              在標注號碼的四條語句中正確的是( )。

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

              參考答案:B

              參考解析:本題考查公用繼承對基類成員的訪問屬性。在公用繼承中,基類的公用成員和保護成員在派生類中保持原有訪問屬性,其私有成員仍為基類私有。所以本題中n、k和setK變為了派生類的保護成員,不能直接使用,即1、3、4錯誤,所以B選項正確。

              40有如下頭文件:

              int fl();

              static int f2();

              class MA{

              public:

              int f3();

              static int f4();

              };

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

              A.flB.f2C.f3D.f4

              參考答案:C

              參考解析:只有類的非靜態成員函數才隱含this指針。其作用域是類內部,當類的非靜態成員函數中訪問類的非靜態成員時,編譯器會自動將對象本身的地址作為一個隱含參數傳遞給函數,而不必一定寫上this。所以本題答案為C。

              二、基本操作題

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

              打開503號門…門是鎖著的,打不開。

              打開503號門的鎖…鎖開了。

              打開503號門…門打開了。

              打開503號門…門是開著的,無須再開門。

              鎖上503號門…先關門...門鎖上了。

              注意:只修改每個“//ERROR***********found **********”下的那一行,不要改動程序中的其他內容。

              #include

              using namespace std;

              class Door{

              int Bum;//門號

              bool closed;//true表示門關著

              bool locked://true表示門鎖著

              public:

              Door(int nHm){

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

              nun=this一>ann:

              closed=locked=true:

              }

              bool isClosed()const{rehlrn closed;}

              //門關著時返回true,否則返回false

              bool isOpened()const{return!closed;}

              //門開著時返回true,否則返回false

              b001 isLocked()const{retum locked;}

              //門鎖著時返回true,否則返回false

              bool isUnlocked()const{return!locked;}

              //門未鎖時返回true,否則返回false

              void open(){ //開門

              cout<

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

              if(closed)

              cout<<”門是開著的,無須再開門。”;

              else if(10cked)

              cout<<”門是鎖著的,打不開。”;

              else{

              closed=false;

              eout<<”門打開了。”;

              }

              }

              void close(){//關門

              cout<

              if(closed)

              cout<<”門是關著的,無須再關門。”;

              else{

              closed=true;

              cout<<”門關上了.";

              }

              }

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

              void lock()const{//鎖門

              cout<

              if(locked)

              cout<<”門是鎖著的,無須再鎖門。”;

              else{

              if(!closed){

              cout<<”先關門...”;

              closed=true;

              }

              locked=true:

              cout<<”門鎖上了。”;

              }

              }

              wild unlock(){//開鎖

              cout<

              if(!locked)

              cout<<”門沒有上鎖,無須再開鎖。”;

              else{

              locked=false;

              cout<<”鎖開了。”;

              }

              };

              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(){

              三、簡單應用題

              42請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中包含一個程序文件 main.cpp,其中有類CPolygon(“多邊形”)、CRectangle(“矩形”)、CTriangle(“三角形”)的定義。請在橫線處填寫適當的代碼并刪除橫線,以實現上述類定義。該程序的正確輸出結果應為: 注意:只能在橫線處填寫適當的代碼,不要改動程序中的其他內容,也不要刪除或移動“//****found****”。 #include

              {tout<<——<

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

              class CTriangle:public CPolygon{

              int length;//三角形一邊長 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

            【計算機二級《C++》考前沖刺試題】相關文章:

            計算機二級MSOffice考前沖刺試題及答案02-27

            計算機二級考試C++試題03-09

            計算機二級考試C++試題及答案03-27

            2016年9月計算機二級考前沖刺試題03-02

            2016年9月計算機二級考前沖刺試題及答案03-08

            2017計算機二級C++考試試題03-05

            2017計算機知識考前沖刺試題及答案03-10

            2016最新計算機二級C++上機試題及答案03-03

            2016年9月計算機二級C++上機考試沖刺試題及答案03-13

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看