<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-10-20 04:54:04 計算機學歷 我要投稿
            • 相關推薦

            2017年計算機二級《C++》預測試題

              一、選擇題

            2017年計算機二級《C++》預測試題

              1關于運算符重載,下列表述中正確的是(  )。

              A.c++已有的任何運算符都可以重載

              B.運算符函數的返回類型不能聲明為基本數據類型

              C.在類型轉換符函數的定義中不需要聲明返回類型

              D.可以通過運算符重載來創建c++中原來沒有的運算符

              參考答案:C

              參考解析:重載運算符的規則如下:①c++不允許用戶自己定義新的運算符,只能對已有的c++運算符進行重載;②c++不能重載的運算符只有5 個;③重載不能改變運算符運算對象的個數;④重載不能改變運算符的優先級和結合性;⑤重載運算符的函數不能有默認的參數;⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應有一個是類對象,即不允許參數全部是c++的標準類型。故本題答案為c。

              2在類的定義中,用于為對象分配內存空間,對類的數據成員進行初始化并執行其他內部管理操作的函數是( )。

              A.友元函數B.虛函數C.構造函數D.析構函數

              參考答案:C

              參考解析:構造函數在創建對象時系統自動調用,其功能是使用給定的值將對象初始化。

              3軟件設計中模塊劃分應遵循的準則是( )。

              A.低內聚低耦合B.高內聚低耦合C.低內聚高耦合D.高內聚高耦合

              參考答案:B

              參考解析:軟件沒計中模塊劃分應遵循的準則是高內聚低偶合、模塊大小規模適當、模塊的依賴關系適當等。模塊的劃分應遵循一定的要求,以保證模塊劃分合理,并進一步保證以此為依據開發出的軟件系統可靠性強,易于理解和維護。模塊之間的耦合應盡可能的低,模塊的內聚度應盡町能的高。

              4如果類A被說明成類B的友元,則( )。

              A.類A的成員即類B的成員

              B.類B的成員即類A的成員

              C.類A的成員函數不得訪問類B的成員

              D.類B不一定是類A的友元

              參考答案:D

              參考解析:本題考查的是友元類的定義:類A為類B的友元類,則類A的所有成員函數都是類8的友元函數,但反之則不一定成立。

              5有如下類定義:

              class Foo

              {

              public:

              Foo(int v):value(V){}//①

              ~Foo(){}//②

              private:

              Foo(){}//③

              int value=0://④

              };

              其中存在語法錯誤的行是(  )。

              A.①B.②C.③D.④

              參考答案:D

              參考解析:本題考查對象的初始化,類的數據成員是不能在聲明類時初始化的,所以本題答案為D。

              6下面關于數組的描述錯誤的是( )。

              A.在C++語言中數組的名字就是指向該數組第一個元素的指針

              B.長度為n的數組,下標的范圍是0~n-1

              C.數組的大小必須在編譯時確定

              D.數組只能通過值參數和引用參數兩種方式傳遞給函數

              參考答案:D

              參考解析:本題考查的是數組的基本使用,數組還可以通過對應的指針調用傳遞參數,其余選項的說法都是正確的。

              7運算符重載是對已有的運算符賦予多重含義,因此( )。

              A.可以對基本類型(如int類型)的數據,重新定義“+”運算符的含義

              B.可以改變一個已有運算符的優先級和操作數個數

              C.只能重載c++中已經有的運算符,不能定義新運算符

              D.C++中已經有的所有運算符都可以重載

              參考答案:C

              參考解析:重載運算符的規則如下:①c++不允許用戶自己定義新的運算符,只能對已有的c++運算符進行重載;②c++不能重載的運算符只有5 個;③重載不能改變運算符運算對象的個數;④重載不能改變運算符的優先級和結合性;⑤重載運算符的函數不能有默認的參數;⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應有一個是類對象,即不允許參數全部是c++的標準類型。故本題答案為c。

              8有如下類和對象的定義:

              class Constants{

              public:

              static double getPI(){return 3.1416;}

              };

              Constants constants:

              下列各組語句中,能輸出3.1416的是( )。

              A.cout

              參考答案:D

              參考解析:本題考查靜態成員函數。靜態成員函數由于沒有this指針,所以不能訪問本類中的非靜態成員。引用靜態成員函數有2種方式,一種是直接使用類來引用,即Constants::getpI();另一種是使用對象來引用,即constants.getPI()。所以本題答案為D。

              9程序流程圖中帶有箭頭的線段表示的是( )。

              A.圖元關系B.數據流C.控制流D.調用關系

              參考答案:C

              參考解析:在數據流圖中,用標有名字的箭頭表示數據流。在程序流程圖中,用標有名字的箭頭表示控制流。所以選擇C。

              10下列程序的執行結果為( )。

              #include

              void main()

              {

              int a=3,b=0;

              int*P =&a;

              b=+a++;

              cout<<*P<<”,”<

              }

              A.3,4B.4,3C.3,3D.4,4

              參考答案:B

              參考解析:*P為所指對象a的值,語句“b=+a++;”等價于“b=b+a;a=a+1;”。

              11對長度為n的線性表排序,在最壞情況下,比較次數不是n(rt一1)/2的排序方法是( )。

              A.快速排序B.冒泡排序C.直接插入排序D.堆排序

              參考答案:D

              參考解析:除了堆排序算法的比較次數是0(nlog2n),其他的都是n(n—1)/2。

              12字面常量42、4.2、42L的數據類型分別是(  )。

              A.long,double、intB.lon9、float、intC.int、double、longD.int、float、long

              參考答案:C

              參考解析:本題考查整型變量的類型和浮點變量的類型,42默認為int型數據,42后面加上L后,表示long型數據,4.2默認為double型數據。

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

              A.棧是“先進先出”的線性表

              B.隊列是“先進后出”的線性表

              C.循環隊列是非線性結構

              D.有序線性表既可以采用順序存儲結構,也可以采用鏈式存儲結構

              參考答案:D

              參考解析:棧是先進后出的線性表,所以A錯誤;隊列是先進先出的線性表,所以B錯誤;循環隊列是線性結構的線性表,所以C錯誤。

              14不能作為重載函數的調用的依據是(  )。

              A.參數個數B.參數類型C.函數類型D.函數名稱

              參考答案:D

              參考解析:所謂重載函數是指同一個函數名可以對應多個函數的實現,編譯器會根據參數個數、參數類型和函數返回值類型不同而自動調用相應的函數。

              15下列語句中,錯誤的是(  )。

              A.const int buffer=256;

              B.const double*point;

              C.int const buffer=256;

              D.double*eonst point:

              參考答案:D

              參考解析:const是一個C++關鍵字,用于限定不允許改變的變量。選項B是指向常量的指針,定義時可以不初始化;選項D是指針常量,定義時必須初始化。故答案為D。

              16下列運算符中,在c++語言中不能重載的是( )。

              A.*B.>=C.::D./

              參考答案:C

              參考解析:不能被重載的運算符還包括:“.”、“.*”、“->*”和“?:”。

              17有如下說明:

              int a[10]={1,2,3,4,5,6,7,8,9,10},* P=a; 則數值為9的表達式是( )。

              A.*P+9B.木(P+8)C.*P+=9D.P+8

              參考答案:B

              參考解析:本題考查指向數組的指針,本題中指針變量P指向數組a,那么*P的值就是1,即表示數組的第一個元素,那么數值為9的表達式就是將指針向后移動8個地址,即P+8指向的是數組元素值為9,所以數值為9的表達式是*(P+8)。

              18執行下列語句段后,輸出字符“*”的個數是( )。

              for(int i=50;i>1;i-=2)Cout<<'*':

              A.24B.25C.26D.50

              參考答案:B

              參考解析:本題考查for循環語句,題目中每執行完循環體后,i都會減2.那么只有50到2之間的偶數才能輸出“*”,所以總共輸出25次。

              19算法的有窮性是指( )。

              A.算法程序的運行時間是有限的

              B.算法程序所處理的數據量是有限的

              C.算法程序的長度是有限的

              D.算法只能被有限的用戶使用

              參考答案:A

              參考解析:算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算后即可完成。有窮性是指算法程序的運行時間是有限的。

              20下面關于break語句的描述中,不正確的是( )。

              A.break可以用于循環體內

              B.break語句可以在for循環語句中出現多次

              C.break語句可以在switch語句中出現多次

              D.break語句可用于if條件判斷語句內

              參考答案:D

              參考解析:本題考查的是break語句的使用,break可以結束switch語句和for循環語句,但是不能使用在條件判斷語句內。

              21有如下類定義:

              class Point

              {

              int xx.yy;

              public:

              Point():xx(0),yy(0){}

              Point(int x,int Y=0):xx(X),YY(Y){}

              };

              若執行語句

              Point a(2),b[3],幸c[4];

              則Point類的構造函數被調用的次數是(  )。

              A.2次B.3次C.4次D.5次

              參考答案:C

              參考解析:本題考查默認構造函數和帶參數的構造函數,題目中定義一個對象a(2)以及對象數組b[3],共執行4次構造函數,對象指針不調用構造函數。所以本題答案為c。

              22有如下程序:

              #include

              using namespace std;

              class Basel

              {

              public:

              BaseI(int D.{cout<

              一Basel(){}

              };

              class Base2

              {

              public:

              Base2(int D.{tout<

              ~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;

              }

              執行這個程序的輸出結果是(  )。

              A.1234B.2134C.12D.21

              參考答案:D

              參考解析:本題考查派生類的構造函數和析構函數,在定義一個派生類的對象時,先調用基類的構造函數,然后再執行派生類的構造函數,對象釋放時,先執行派生類的析構函數,再執行基類的析構函數。本題中定義一個派生類對象時,分別調用基類的構造函數,所以分別輸出21。

              23以下敘述正確的是( )。

              A.函數可以嵌套定義但不能嵌套調用

              B.函數既可以嵌套調用也可以嵌套定義

              C.函數既不可以嵌套定義也不可以嵌套調用

              D.函數可以嵌套調用但不可以嵌套定義

              參考答案:D

              參考解析:在c++語言中,所有的函數都是平行的,即在定義函數時是互相獨立的,一個函數并不從屬于另一個函數,即函數不能嵌套定義,但可以互相調用。但是不能調用main()函數。

              24必須用一對大括號括起來的程序段是( )。

              A.switCh語句中的Case標號語句

              B.if語句的分支

              C.循環語句的循環體

              D.函數的函數體

              參考答案:D

              參考解析:本題考查c++基本控制結構,A、B、C三個選項中的大括號不是必須的,而D選項中的函數體必須使用大括號。

              25軟件按功能可以分為應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬于應用軟件的是( )。

              A.學生成績管理系統

              B.C語言編譯程序

              C.UNIX操作系統

              D.數據庫管理系統

              參考答案:A

              參考解析:軟件按功能可以分為:應用軟件、系統軟件、支撐軟件。操作系統、編譯程序、匯編程序、網絡軟件、數據庫管理系統都屬于系統軟件。所以B、C、D都是系統軟件,只有A是應用軟件。

              26下面程序的運行結果為( )。

              #include

              void main()

              {

              for(int a=0,x=0;!x&&a<=10;a++)

              {

              a++:

              }

              cout<

              }

              A.10B.1lC.12D.0

              參考答案:C

              參考解析:在進入最后一次循環時a=10,在循環體內執行“a++;”后a=11,執行完該次循環體計算for循環的增量部分后a=12小于l0,循環結束。

              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;

              }

              若程序的輸出結果是:

              123

              則程序中下畫線處遺漏的語句是(  )。

              A.cout<

              參考答案:A

              參考解析:本題考查構造函數、常成員函數和靜態數據成員。外部同名的變量賦值,不能改變類的靜態變量值,所以Fun對象里的i值為2,所以本題答案為A。

              28下列有關模板的敘述中,正確的是( )。

              A.函數模板不能含有常規形參

              B.函數模板的一個實例就是一個函數定義

              C.類模板的成員函數不能是模板函數

              D.用類模板定義對象時,絕對不能省略模板實參

              參考答案:B

              參考解析:本題考查函數模板和類模板的基礎知識,所以本題答案為B。

              29運算符重載時不需要保持的性質是( )。

              A.操作數個數B.操作數類型C.優先級D.結合性

              參考答案:B

              參考解析:重載運算符的規則如下:①c++不允許用戶自己定義新的運算符,只能對已有的c++運算符進行重裁;②c++不能重載的運算符只有5 個;③重載不能改變運算符運算對象的個數;④重載不能改變運算符的優先級和結合性;⑤重載運算符的函數不能有默認的參數;⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應有一個是類對象,即不允許參數全部是c++的標準類型。所以答案為B。

              30下列程序的輸出結果為( )。

              #include

              {

              if(n<1)return l;

              else return n+time(n一1); return 0;

              }

              void main() {

              cout<

              }

              A.0B.10C.15D.16

              參考答案:D

              參考解析:本題考查的是遞歸函數的使用,題中遞歸函數的結束條件為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;

              {

              執行這個程序的輸出結果是( )。

              A.112444B.11114444C.121444D.11314444

              參考答案:A

              參考解析:本題:考查構造函數和復制構造函數以及重載運算符。本題中先后定義了兩個對象obj1,obj2,依次輸出口,然后定義了對象obj3,凋用復制構造函數,輸出2,最后執行三次析構函數,輸出444。

              32在下列模式中,能夠給出數據庫物理存儲結構與物理存取方法的是( )。

              A.外模式B.內模式C.概念模式D.邏輯模式

              參考答案:B

              參考解析:數據庫系統的蘭級模式是概念模式、外模式和內模式。概念模式是數據庫系統中全局數據邏輯結構的描述,是全體用戶公共數據視圖。外模式也稱子模式或用戶模式,它是用戶的數據視圖,給出了每個用戶的局部數據描述、、內模式又稱物理模式,它給出r數據庫物理存儲結構與物理存取方法,所以選擇 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();  ptr;

              retum0; }

              執行這個程序的輸出結果是( )。

              A.1BB.lDC.2BD.2D

              參考答案:B

              參考解析:在某基類中聲明為vitua1并在一個或多個派生類中被重新定義的成員函數,本題中定義了一個指向派生類對象的基類指針ptr,執行 ptr一>outpnt后,會執行基類的output函數,輸出1,由于Print是虛函數,所以ptr->Print()會執行派生類的 Print,即輸出D,所以本題答案為B。

              34以下程序中,錯誤的行為是( )。

              ①#include

              ②class A

              ③{

              ④public:

              ⑤ int n=2;

              ⑥ A(int val){cout<

              ⑦ -A(){};

              ⑧};

              ⑨void main() ⑩{

               A a(0);

              }

              A.⑤B.⑥C.⑦D.

              參考答案:A

              參考解析:C++語言中規定在類體中不允許對所定義的數據成員進行初始化。

              35下列數據結構中,屬于非線性結構的是( )。

              A.循環隊列B.帶鏈隊列C.二叉樹D.帶鏈棧

              參考答案:C

              參考解析:樹是簡單的非線性結構,所以二叉樹作為樹的一種也是一種非線性結構。

              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<

              }

              運行時輸出的結果是(  )。

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

              參考答案:B

              參考解析:本題考查構造函數,本題中對類中的a數據成員先是賦值為0,當定義了對象obj時,執行構造函數,將a的值變為了1,所以輸出1。

              37軟件詳細設計產生的圖如下:

              該圖是( )。

              A.N—S圖B.PAD圖C.程序流程圖D.E—R圖

              參考答案:C

              參考解析:N—S圖提出了用方框圖來代替傳統的程序流程圖,所以A不對。PAD圖是問題分析圖,它是繼承程序流程圖和方框圖之后提出的又一種主要用于描述軟件詳細設計的圖形表示工具,所以B不對。E—R圖是數據庫中的用于表示E—R模型的圖示工具,所以D不對。根據圖中所示表示方法是進行軟件詳細設計時使用的程序流程圖。

              38秘序調試的任務是( )。

              A.設計測試用例

              B.驗證程序的正確性

              C.發現程序中的錯誤

              D.診斷和改正程序中的錯誤

              參考答案:D

              參考解析:程序調試的任務是診斷和改正程序中的錯誤。

              39有如下程序:

              #include

              using namespace std;

              class A{

              public:

              virtual void fancl(){cout<<”Al”;}

              void func2(){cout<<”A2”;}

              };

              class B:public A{

              public:

              void funcI(){tout<<”Bl”;}

              void func2(){tout<<”B2”;}

              };

              intmain()}

              A*P=new B:

              P—>funcl();

              P—>func2();

               p;

              return 0;

              }

              執行這個程序的輸出結果是(  )。

              A.B182B.A1A2C.B1A2D.AIB2

              參考答案:C

              參考解析:本題考查虛函數。虛函數指在基類中聲明為virtual并在一個或多個派生類中被重新定義的成員函數。題中定義了一個派生類對象8,并使用類A的對象指針指向B,由于基類A中的funcl為虛函數,所以會執行派生類的funcl,輸出Bl,而基類中的func2不是虛函數,所以 P->func2()會執行基類的func2,輸出A2。故答案為c。

              40下列字符串中。不可以用做c++標識符的是(  )。

              A.y_2006B._EST_HC.ReturnD.switch

              參考答案:D

              參考解析:本題考查C++標識符的命名規則,其規則有如下幾點:①所有標識符必須由字母、數字或下畫線組成,且必須由字母或下畫線開頭;②所有標識符不能使用C++已有的關鍵字;③大、小寫字母表示不同意義,即代表不同的標識符。選項C中雖然retum是關鍵字,但因首字母大、小寫不同,也可用于標識符,但不建議使用。故答案為D。

              二、基本操作題

              41請使用VC6或使用【答題】菜單打開考生文件夾projl下的工程projl,其中有枚舉DOGCOLOR、狗類Dog和主函數main的定義。程序中位于每個“//ERROR ****found****”下的語句行有錯誤,請加以改正。改正后程序的輸出結果應該是:

              There is a white dog named Hoh0. There is a blaCk dog named Haha. There is a motley dog named Hihi. 注意:只修改每個//ERROR****found****女料下的那一行,不要改動程序中的其他內容。

              #inClude using namespaCe std; //狗的顏色:黑、白、黃、、花、其他

              enum DOGCOLOR{BLACK,WHITE,YELLOW,BROWN,PIEBALD,OTHER}; Class Dog{//狗類

              DOGCOLOR Color; Char name[20]; statiC int Count; publiC:

              Dog(Char nalTle[],DOGCOLOR Color){ strCpy(this一>name,name);

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

              strCpy(this一>Color,Color);

              } 1 DOGCOLOR getColor()Const{retum Color;}

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

              Const Char * 9etName()Const{return*finin9;} Const Char * 9etColorString()Const{

              switCh(Color){

              Case BLACK:return”blaCk“; Case WHITE:return”white”:

              Case YELLOW:return’"yellow”: Case BROWN:return”brown”; ease PIEBALD:return”piebald”:

              }

              return”motley”;

              }

              void show()Const{ . Cout<<”There is a”<

              } }; int main(){

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

              Dog dogl(”Hoh0”,WHITE),dog2(”Haha”,BLACK);d0g3(”Hihi”,0THER); d091.show();

              dos2.show(); dos3.show(); return 0;

              }

              參考解析:

              (1)this->color=color:

              (2)consL char getName()eonst{return*name;}

              (3)Dog dogl(”Hoho”,WHITE)。dog2(”Haha”,

              BLACK),dog3(”Hihi”,OTHER);

              三、簡單應用題

              42請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2。此工程中包含一個源程序文件main.cpp,其中有“房間”類Room及其派生出的“辦公室”類0ffice的定義,還有主函數main的定義。請在程序中“//****found****”下的橫線處填寫適當的代碼并刪除橫線,以實現上述類定義。此程序的正確輸出結果應為:

              辦公室房間號:308

              辦公室長度:5.6

              辦公室寬度:4.8

              辦公室面積:26.88

              辦公室所屬部門:會計科

              注意:只能在橫線處填寫適當的代碼,不要改動程序中的其他內容,也不要刪除或移動“///料料found料”。

              #include

              using namespaee std;

              class Room{ //“房間”類

              int room_n0;//房間號

              double length;//房間長度(m)

              double width;//房間寬度(n1)

              public:

              Room(int the—room—n0,double the~length,double the—width):loom—no(the—room—no),length(the—

              length),width(the—width){}

              int theRoomNo()eonst{return iDonl—n0;}

              //返回房間號

              double theLength()const{return length;}//返回房間長度

              double theWidth()const{return width;}//返回房間寬度

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

              double theArea()const{_______________}//返回房間面積(矩形面積)

              };

              class Office:public Room{//“辦公室”類

              char*depart;//所屬部門

              public:

              Office(int the_room_n0,double the_length,double the_width,eonst char木the_depart)

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

              :_______________{

              depart=new char[strlen(the depart)+1];

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

              strcpy(_______________);

              }

              ~Office(){[]depart;}

              const char*theDepartment()const{return depart;}//返回所屬部門

              };

              int main(){

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

              Office_______________;

              cout<<”辦公室房間號:”<

              <<”辦公室長度:”<

              <<”辦公室寬度:”<

              <<”辦公室面積:”<

              <<”辦公室所屬部門:”<

              return 0;

              }

             

            【計算機二級《C++》預測試題】相關文章:

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

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

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

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

            2016年計算機二級C++模擬試題及答案03-07

            2017全國計算機二級C++考試試題03-04

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

            計算機二級C語言預測試題10-25

            2016計算機等級考試二級C++上機模擬試題及答案03-08

            <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>
                      黄色视频在线观看