違法信息舉報 客服熱線:400-118-7898
廣告
?
專接本欄目測試廣告

?C++程序設計2010年1月真題試題(04737)

自考 責任編輯:彭雅倩 2019-06-24

摘要:C++程序設計2010年1月真題試題及答案解析(04737),本試卷總共100分。

C++程序設計2010年1月真題試題及答案解析(04737)

C++程序設計2010年1月真題試題及答案解析(04737),本試卷總共100分。

一、單項選擇題

(本大題共20小題,每小題1分,共20分)在每小題列出的四個備選項中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內。錯選、多選或未選均無分。

1.在C++中,頭文件擴展名為(  )

A..cpp
B..h
C..lib
D..obj

2.下列符號中,不屬于分隔符的是(  )

A.,
B./
C.;
D.{ }

3.可替換#define PI 3.1415926的語句是(  )

A.float PI 3.1415926;
B.const float PI=3.1415926;
C.const PI(3.1415926);
D.const 3.1415926;

4.布爾類型標識符是(  )

A.void
B.short
C.long
D.bool

5.下列不是C++語言的基本數(shù)據(jù)類型的是(  )

A.字符類型
B.整數(shù)類型
C.邏輯類型
D.枚舉類型

6.C++允許在結構中定義函數(shù),這些函數(shù)稱為(  )

A.靜態(tài)函數(shù)
B.構造函數(shù)
C.析構函數(shù)
D.成員函數(shù)

7.設函數(shù)void inc(int)將形參加1,如有整型變量int i=10; 則執(zhí)行inc(i); 后,i的值為(  )

A.9
B.10
C.11
D.未知

8.下列哪種默認參數(shù)的聲明是不正確的(  )

A.int max(int a, int b, int c, int d=0);
B.int max(int a, int b, int c=0, int d=0);
C.int max(int a=0, int b, int c=0, int d=0);
D.int max(int a, int b=0, int c=0, int d=0);

9.設int &max(int &, int &)返回兩參數(shù)中較大者,如有兩整型變量int a=10; int b=15;在執(zhí)行max(a, b)++后,a,b值分別為(  )

A.10,15
B.11,15
C.10,16
D.11,16

10.包含哪種語句的函數(shù)不能聲明為內聯(lián)函數(shù)(  )

A.循環(huán)
B.變量自增自減
C.if…else…
D.變量聲明

11.定義函數(shù)模板中使用的參數(shù)類型標識符需使用下列哪組符號括起來(  )

A.<>
B.""
C.( )
D.{ }

12.一個類擁有多個構造函數(shù),則這些構造函數(shù)間為(  )

A.重載關系
B.重復關系
C.拷貝關系
D.無關系

13.對于拷貝構造函數(shù)point:: point(point& p),下列說明正確的是(  )

A.該函數(shù)只能訪問P的私有成員
B.該函數(shù)不能訪問P的公有成員
C.該函數(shù)可以訪問P的私有和公有成員
D.該函數(shù)不能訪問P的成員

14.使用delete[ ]刪除對象數(shù)組時,描述正確的是(  )

A.數(shù)組中各元素都調用析構函數(shù)
B.數(shù)組中各元素都調用構造函數(shù)
C.不調用析構函數(shù)
D.只有首元素調用析構函數(shù)

15.下列哪個指令屬于條件編譯指令(  )

A.#elif
B.#error
C.#pragma
D.#include

16.設類Test中存在成員static int x,則下列哪種初始化方式是正確的(  )

A.Test::int x=25;
B.int x=25;
C.int Test::x=25;
D.int Test x=25;

17.下列關于友元的描述錯誤的是(  )

A.成員函數(shù)不可作友元
B.類可以作友元
C.普通函數(shù)可以作友元
D.靜態(tài)函數(shù)可以作友元

18.在繼承中,派生類擁有的基類個數(shù)為(  )

A.0個
B.1個
C.多個
D.至少1個

19.基類中的protected成員,通過public派生,其在派生類中的可見性為(  )

A.不可訪問
B.private
C.protected
D.public

20.下列哪個不是面向對象的關鍵要素(  )

A.抽象性
B.結構性
C.封裝性
D.多態(tài)性

二、填空題

(本大題共20小題,每小題1分,共20分)請在每小題的空格中填上正確答案。錯填、不填均無分。

11.在STL庫中用于實現(xiàn)數(shù)組內容反轉的函數(shù)是__________。

12.若要使用C++標準類庫,需要指定相應的命名空間,所用的語句是__________。

13.C++語言中的整數(shù)常量有4種描述類型:十進制常量、長整型常量、八進制常量和__________。

14.聲明一個名為a的整型引用變量所使用的語句是__________。

15.重載的運算符仍保留原有的優(yōu)先級、__________和語法結構。

16.執(zhí)行代碼  int b=100;  cout<<hex<<b:程序的輸出結果是__________。

17.帶有純虛函數(shù)的類稱為抽象類,它只能作為__________來使用。

18.使用__________作為函數(shù)參數(shù),實參對象和形參對象代表同一對象,改變形參對象的值就是改變實參對象的值。

19.UML中對象之間的靜態(tài)關系是通過對象屬性之間的連接反映的,稱之為__________。

110.如果一個模板聲明列出多個參數(shù),則多個參數(shù)之間必須使用逗號隔開,每個參數(shù)都必須重復使用關鍵字__________。

111.C++類的構造函數(shù)名與__________名稱一樣,且沒有返回值。

112.C++規(guī)定,當一個成員函數(shù)被調用時,系統(tǒng)自動向它傳遞一個隱含的參數(shù),該參數(shù)是一個指向調用該函數(shù)的對象的指針,該指針被稱為__________指針。

113.聲明一個常成員函數(shù)Fun,其返回類型為char,第一個參數(shù)類型為int,第二個參數(shù)類型為double,函數(shù)Fun的聲明原型是__________。

114.C++語言中的“聚合”隱含了兩種實現(xiàn)方式,一種是__________,另一種是用一個類的對象作為一種廣義的數(shù)據(jù)類型來定義整體對象的一個屬性。

115.簡單成員函數(shù)是指聲明中不含const、__________和static關鍵字的函數(shù)。

116.在派生類中繼承的基類成員的初始化,需要由派生類的構造函數(shù)調用基類的__________來完成。

117.在C++中,利用向量類模板定義一個具有20個int的向量,其所有元素被置為1,實現(xiàn)此操作的語句是__________。

118.vector類中用于獲取無需再次分配內存就能容納的對象個數(shù)的方法是__________。

119.動態(tài)聯(lián)編是程序運行到需要的語句處才動態(tài)確定的,這稱為__________多態(tài)性。

120.C++重載“=”運算符的函數(shù)名是__________。

三、改錯題

(本大題共5小題,每小題4分,共20分)下面的類定義中有一處錯誤,請用下橫線標出錯誤所在行并給出修改意見。

21.  #include<iostream.h>  #define PI 3.14;  void main( )  {    double i;    int r;    cout<<″輸入圓形半徑:″;    cin>>r;    i=2 * PI * r;    cout<<″圓形周長=″<<i<<endl;    i=PI * r * r;    cout<<″圓形面積=″<<i<<endl;  }

22.  #include <iostream.h>  class A  {  private:    int x, y;  public:    A(int a=0, b=1);    void Show( );  };  A::A(int a, int b)  {    x=a;    y=b;  }  void A::Show( )  {    cout<<″x=″<<x<<endl;    cout<<″y=″<<y<<endl;  }

23.  #include <iostream.h>  class A  {    unsigned char var;  public:    A(unsigned char x){    var=x:    }    void print( ){    cout<<″var=″<<var;    }    };    void main( )    {       A a(″x″);       a. print( );   }

24.   #include < iostream.h>   class Class   {    public:       void print(int a,int b) {          cout<<″int:″<< a << endl;          cout <<″int:″<< b << endl;     }       void print(char * a,char * b) {          cout<<″string:″ <<a <<endl;          cout <<″ string:″ <<b <<endl;     }       void print(char * a,unsigned int b){          cout <<″string:″ <<a <<endl;          cout <<″int:″ <<b <<endl;     }   };    void main( )   {       Class cls;       cls.print(10,20);       cls.print(′c′,1);       cls.print(′x′,′y′);       cls.print(″Hello!″,0);   }

25.   #include < iostream.h >   class Class   {     private:        int val;     public:        void func( int a)     {           val = a;     }   };   void main( )   {        Class * cls ;        cls -> func(10) ;   }

四、完成程序題

(本大題共5小題,每小題4分,共20分)

31.將下面程序補充完整,使程序計算100以內所有可被7整除的自然數(shù)之和。  #include <iostream.h>  void main( )  {    int x=1;    int sum=0;    while(true)    {    if(x>100){     __________;    }     if(__________){     sum=sum+x;     }     x++;    }    cout<<sum<<endl;  }

32.將下面程序補充完整,使程序執(zhí)行結果為9。  #include <iostream.h>  class Class{  public:  __________{     x=a;    }    __________{      return x * x;    }  private:    int x;  };  void main( )  {    Class a(3);    cout<<a.get( )<<endl;  }

33.將下面程序補充完整,使程序正確的初始化私有變量var及釋放資源。  class Class  {  private:    int * var;  public:    Class(int num);    ~Class( );  };  Class::Class(int num)  {     ___________;  }  Class::~Class( )  {     ___________;  }

34.將下面程序補充完整,使程序的輸出結果為:ClassA::PrintClassB::Print程序如下:  #include<iostream.h>  class Base  {    public:    virtual void Print( ) const {      cout<<″Base::Print″<<endl;    }  };  class ClassA:public Base  {  public:    void Print( )const{cout<<″ClassA::Print″<<endl;}  };  class ClassB:public Base  {  public:    void Print( )const{cout<<″ClassB::Print″<<endl;}  };  void Print(__________)  {    __________;  }  void main( )  {    ClassA a;    ClassB b;    Print(a);    Print(b);  }

35.下列程序的運行結果如下:x=22,y=22根據(jù)結果將程序補充完整。  #include <iostream.h>  template <__________>  void f(__________)  {    if(sizeof(T1)>sizeof(T2))        x=(T1)y;    else        y=(T2)x;  }  void main( ){    double x=134.2;    int y=22;    f(x,y);    cout<<″x=″<<x<<″,y=″<<y;  }

五、程序分析題

(本大題共2小題,每小題5分,共10分)

41.請給出下面程序的輸出結果  #include < iostream.h >  class Class  {    public:       static int var;     Class( )       {          var+ +;     }   };   int Class::var = 0;   void main( )   {       cout <<″Class::var =″ <<Class:: var <<endl;       Class c1 ;       cout < <″c1. var=″ < <c1. var < <endl;       Class c2, c3 ;       cout <<″c2. var =″ <<c2. var <<endl;   }

42.   #include < iostream.h >   class A   {    public:      A( );       void Show( ) ;      ~A( );    private:       static int c;    };   int A::c =0;   A::A( )   {       cout <<″constructor.″ <<endl;       c+ =10;   }   void A: :Show( )   {       cout<<″c=″ < <c< <endl;   }   A::~A( )   {       cout <<″destructor.″ <<endl;   }    void main( )   {       A a, b;       a.Show( );       b.Show( );   }

六、程序設計題

(本大題共1小題,共10分)

51.利用LOCATION類,使用繼承定義圓類CIRCLE,圓由圓心和半徑構成。提供得到圓心坐標和半徑的成員函數(shù)、以及計算圓的周長和面積的成員函數(shù)。在主程序中創(chuàng)建兩個圓A和B,圓心坐標分別為(0,3)、(3,7),按如下格式輸出兩個圓的圓心坐標、周長和面積,并計算和輸出兩個圓的圓心之間的距離。A:(x1,y1,r1),Girth=g1,Area=a1B:(x2,y2,r2),Girth=g2,Area=a2A(x1,y1),B(x2,y2),Distance=d定義LOCATION類,該類沒有“繼承”等現(xiàn)象。注意二維坐標點之間的距離公式。class LOCATION{double x,y;public:virtual double getx( )const{return x;};virtual double gety( )const{return y;};virtual double dist(LOCATION &s)const;LOCATION(double x, double y):x(x), y(y){ };};double LOCATION:: dist(LOCATION &s)const{double xd=s.x-x, yd=s.y-y;return sqrt(xd*xd+yd*yd);}

溫馨提示:因考試政策、內容不斷變化與調整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內容為準!

自考備考資料免費領取

去領取