• 您現在的位置:首頁 - 備考 - 自考問一問

    全國2012年1月04737C++程序設計自考試卷

    2025-07-08 來源:中國教育在線

      全國2012年1月高等教育自學考試

      C++程序設計試題

      課程代碼:04737

      一、單項選擇題(本大題共20小題,每小題1分,共20分)

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

      1.如聲明對象數組,則下列描述正確的是( )

      A.對每個元素均調用一次構造函數

      B.部分元素調用構造函數,其它元素不需調用

      C.均不需要調用構造函數

      D.只是首元素調用構造函數

      2.不同對象調用同一成員函數時,this指針指向( )

      A.不同對象 B.相同對象

      C.無對象 D.不確定

      3.設存在函數intmax(int,int)返回兩參數中較大值,若求22,59,70三者中最大值,下列表達式正確的是( )

      A.int m=max(22,max(59,70));

      B.int m=max(max(22,59),max(59,70));

      C.int m=max(max(22,70),59);

      D.以上皆正確

      4.一個類可擁有多少個構造函數( )

      A.0個 B.1個

      C.1或多個 D.以上皆對

      5.在編譯指令中,嵌入指令是指( )

      A.#include B.#define

      C.#if D.#else

      6.設存在數組a,其長度為Len,下列哪項操作是將a中元素復制到數組b中( )

      A.reverse(a+a,Len,b); B.sort(a,a+Len,b);

      C.find(a,a+Len,b); D.copy(a,a+Len,b);

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

      A.模塊化 B.抽象性

      C.封裝性 D.繼承性

      8.下列對于類的描述錯誤的是( )

      A.類要先聲明后使用

      B.類是具有僅有標識的實體

      C.兩個類可以使用同一個名稱

      D.組成類的不僅有數據,還可以有對數據進行操作的函數

      9.使用引用調用方式將實參傳給形參,下列說法正確的是( )

      A.形參是實參的備份 B.實參是形參的備份

      C.形參和實參共享同一對象 D.形參和實參無聯系

      10.關于對象的性質,下列描述錯誤的是( )

      A.同一類對象之間可相互賦值

      B.不能使用對象數組

      C.對象可以用作函數參數

      D.一個對象可以用作另一個類的成員

      11.類的私有成員可在哪里被賦值( )

      A.類體中 B.該類的成員函數中

      C.A和B D.以上都不是

      1 2.設存在數組a,其長度為Len,則下列哪個泛型算法用于反轉a中各元素( )

      A.reverse(a,a+Len); B.sort(a,a+Len);

      C.find(a,a+Len,value); D.copy(a,a+Len,b);

      13.用于標識八進制常量的前綴或后綴是( )

      A.無 B.后綴L或1

      C.前綴零 D.前綴Ox

      14.派生類中繼承的基類成員初始化如何進行( )

      A.由派生類構造函數調用基類的構造函數進行

      B.由派生類構造函數進行

      C.由基類構造函數進行,無需派生類構造函數調用

      D.以上皆不正確

      1 5.對于多重繼承,下列描述正確的是( )

      A.所有基類使用相同的派生方式 B.每個基類可使用不同派生方式

      C.只能是public派生 D.只能是protected派生

      16.下列關于類的權限描述錯誤的是( )

      A.類本身的成員函數可以訪問自身的任何成員

      B.類的對象可以訪問該類的所有成員

      C.普通函數不能直接訪問類的公有成員,必須通過成員函數對其訪問

      D.一個類可以將另一個類的對象作為成員

      17.運算符delete與哪個函數一起運行( )

      A.構造函數 B.析構函數

      C.主函數 D.不與任何函數一起工作

      18.一個類可以獲得另一個類的特性的機制稱為( )

      A.抽象 B.封裝

      C.繼承 D.多態性

      19.使用下列哪個格式控制符可設置轉換十六進制為十進制( )

      A.dec B.oct

      C.hex D.endl

      20.對引用調用描述正確的是( )

      A.分配新存儲空間

      B.修改已存儲空間的名稱為引用名

      C.引用名與已存在存儲空間無任何關聯

      D.將引用名標識符與一塊已存在儲區域相關聯,沒有分配新存儲空間

      二、填空題(本大題共20小題,每小題1分,共20分)

      請在每小題的空格中填上正確答案,錯填、不填均無分。

      21.公共派生中,基類的公有成員在派生類中是______。

      22.若要使用標準輸入流機制從鍵盤輸入一個整數賦給整型變量a,相應的C++語句是______。

      23.UML中對象行為之間的動態關系是通過對象行為之間的依賴關系表現的,稱之為______。

      24.C++函數中按引用調用傳遞參數時使用______作為參數。

      25.在C++中除具有______語句和switch語句的函數外,其它函數都可以說明為內聯函數。

      26.C++中規定模板以______關鍵字和一個形參表示開頭。

      27.構造函數不能被繼承,一個派生類只能調用它的______基類的構造函數。

      28.vector類中用于獲取存放的元素個數的方法是______。

      29.C++中istream類的直接基類是______。

      30.要關閉一個文件輸出流對象myFile,所用的C++語句是______。

      31.執行下列代碼

      double pi=3.141592

      cout<

      32.在私有派生中,基類的權限為private的成員,在派生類中______。

      33.C++總共有3種文件流,分別是輸入文件流、輸出文件流和______。

      34.C++使用流進行輸入輸出,其中能捕獲鍵盤輸入的對象是______。

      35.在vector類中刪除向量中最后一個對象的方法是______。

      36.函數重載可使一個函數名具有多種功能,稱這種特性為______。

      37.C++語言對C語言做了很多改進,C++語言相對于C語言的最根本的變化是引進了______概念。

      38.______指令定義一個標識符及串,在源程序中每次遇到該標識符時,編譯器均用定義的串代替之。

      39.在C++標準輸出方式中,要設置輸出數據字段寬度width所使用的操控符是______。

      40.設有定義int x;float y;,則10+x+y值的數據類型是______。

      三、改錯題(本大題共5小題,每小題2分,共10分)

      下面的類定義中有一處錯誤,請用下橫線標出錯誤所在行并給出修改意見。

      41.#include

      main(){

      int x=9,y=8,z=7;

      const int * p=z;

      cout<< * p<

      }

      42.#include

      main(){

      int x=8,y=6;

      const int*const p=&x;

      p=&y;

      cout<<* p<

      }

      43.#include

      main(){

      folat p;

      p=new folat[5];

      for(int i=0;i<5;i++)

      {cin>> * (p+i);cout<< * (p+i)<

      delete p;

      }

      44.template

      T f(T x){

      T y;

      y=x+T;

      return y;

      }

      45.#include

      class point{

      int x;

      public:void init(int a){x=a;}

      int getx(){return x;}

      void setx(int a){x=a;}

      };

      main(){

      point a;

      a.init(20,30);

      cout<

      }

      四、完成程序題(本大題共5小題,每小題4分,共20分)

      46.在下面程序的下劃線處填上正確的語句,使其得到下面的輸出結果。

      x=2,y=3

      #include

      class Sample

      {

      int x,y;

      public:

      Sample( ){

      x=y=0;

      }

      Sample(int a,int b){

      x=a;

      (__________)

      }

      void disp( )

      {

      cout<<"x="<

      }

      }(____-_______)

      void main( )

      {

      Sample s(2,3),*p=&s;

      p - >disp();

      }

      47.在下劃線處填上適當的語句,使程序的輸出結果如下:

      n=30

      #include< iostream.h >

      template< class T >

      class Sample

      {

      T n;

      public:

      Sample( ){ }

      Sample(T i){_________}

      Sample&operator+(const Sample&);

      void disp( ){cout<<"n="<

      };

      template

      Sample&Sample::operator+(const Sample&s)

      {

      static Sampletemp;

      return temp;

      }

      void main( )

      {

      Samples1(10),s2(20),s3;

      s3=s1+s2;

      s3.disp();

      }

      48.在下劃線處填上適當的語句,使程序的輸出結果如下:

      1 2 3 4 5 6 7 8 9 10

      #include

      class Sample

      {

      int A[10][10];

      public:

      int &operator()(int,int);

      };

      int &Sample::operator()(int x,int y)

      {

      return A[x][y];

      }

      void main()

      {

      Sample a;

      int i,j;

      _________

      for(j=0;j<10;j++)

      _________

      for(i=0;i

      cout<

      cout<

      }

      49.在下劃線處填上適當的句子,完成函數的定義。

      #include

      class Sample

      {

      int x;

      public:

      Sample( ){ };

      _________{x=a;}

      _________{x=a.x++ +10;}

      void disp( ){cout<<"x="<

      };

      void main( )

      {

      Sample s1(2),s2(s1);

      s1.disp( );

      s2.disp( );

      }

      50.輸入一個字符串,將其逆序后輸出。

      #include

      using namespace std;

      void main()

      {

      char a[50];memset(a,0,sizeof(a));

      int i=0,j;

      char t;

      cin.getline(a,50,'\ n';

      for(i=0,j=strlen(a)-1;i<_________;i++,j ―― )

      {

      t=a[i];

      a [j]=t;

      }

      cout<

      }

      五、程序分析題(本大題共4小題,每小題5分,共20分)

      51.(給出下面程序的輸出結果

      #include

      class example

      {

      int a;

      public:

      example(int b){a=b++;}

      void print( ){a=a+1;cout<

      void print( )const{cout<

      };

      void main( )

      {

      example x(3);

      const example y(2);

      x.print( );

      y.print( );

      }

      52.給出下面程序的輸出結果

      #include

      class Sample

      {

      int x,y;

      public:

      Sample( ){x=y=0;}

      Sample(int a,int b){x=a;y=b;}

      ~Sample()

      {

      if(x==y)

      cout<<"x=y"<

      else

      cout<<"x!=y"<

      }

      void disp()

      {

      cout<<"x="<

      }

      };

      void main()

      {

      Sample sl(2,3);

      s1.disp();

      }

      53.給出下面程序的輸出結果

      #include

      class Sample

      {

      int n;

      static int sum;

      public:

      Sample(int x){n=x;}

      void add( ){sum+=n;}

      void disp( )

      {

      cout<<"n="<

      }

      };

      int Sample::sum=0;

      void main( )

      {

      Sample a(2),b(3),c(5);

      a.add( );

      a.disp( );

      b.add( );

      b.disp( );

      c.add( );

      c.disp( );

      }

      54.給出下面程序的輸出結果

      #include

      class A{

      private:

      friend class B;

      A(int val=0):data(val),use(1){}

      int use,data;

      };

      class B{

      public:

      A*pa;

      B(int val=0):pa(new A(val)){ }

      ~B( ){if( -- pa ->use==0)delete pa;}

      B(B&rhs){ + + rhs ->use;pa=rhs.pa;}

      B&operator=(B&rhs);

      A*operator ->( ){return pa;}

      void Display( ){

      cout<<"data="<data

      <<",use="<use<

      }

      };

      B&B::operator=(B&rhs)

      {

      if(this = = &rhs)return*this;

      if( -- pa ->use = =0)delete pa;

      + + rhs ->use;

      pa=rhs.pa;

      return * this;

      }

      int main( ){

      B b1(1),b2(b1),b3(3);

      b1.Display( );

      b2.Display( );

      b3.Display( );

      b3=b1;

      b1.Display( );

      b3.Display( );

      return 0;

      六、程序設計題(本大題共1小題,每小題10分,共10分)

      55.已知一個student類,包括學姓名,成績和等級,不含任何成員函數.process為學生信息處理類.

      class student{

      char name[ 10 ];

      int deg;

      char level[ 7 ];

      friend class process:

      public:

      student(char na[ ],int d){strcpy(name,na);deg=d;}

      } ;

      class process{

      public:

      void trans(student s[ ]){…}//根據學生成績計算學生等級(優大于89分,良大于79分,中大于69分,及格大于59分,不及格小于60分).

      void disp(student s[ ]){...}//根據成績降序打印所有學生信息

      };

      要求實現process類中的兩個函數:

    1
    意向表
    2
    學習中心老師電話溝通
    3
    查看評估報告
    1、年齡階段

    2、當前學歷

    3、提升學歷目標

    4、意向學習方式

    報考所在地
    *
    *
    *
    - 聲明 -

    (一)由于考試政策等各方面情況的不斷調整與變化,本網站所提供的考試信息僅供參考,請以權威部門公布的正式信息為準。

    (二)本網站在文章內容出處標注為其他平臺的稿件均為轉載稿,免費轉載出于非商業性學習目的,歸原作者所有。如您對內容、等問題存在異議請與本站聯系,我們會及時進行處理解決。

    首頁 考生自助服務系統
    91精品国产综合久久小仙女