<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 計算機二級C++基礎練習題

    時間:2024-10-28 11:57:49 計算機等級 我要投稿
    • 相關推薦

    計算機二級C++基礎練習題

      C++不僅擁有計算機高效運行的實用性特征,同時還致力于提高大規模程序的編程質量與程序設計語言的問題描述能力。以下是小編整理的關于計算機二級C++基礎練習題,希望大家認真閱讀!

      一、選擇題(每小題1分,共40分)

      1下列有關內聯函數的敘述中,正確的是( )。

      A.內聯函數在調用時發生控制轉移

      B.內聯函數必須通過關鍵字inline來定義

      C.內聯函數是通過編譯器來實現的

      D.內聯函數函數體的最后一條語句必須是return語句

      參考答案:C

      參考解析:一般函數進行調用時,要將程序執行權轉到被調用函數中,然后再返回到調用它的函數中;而內聯函數在調用時,是將調用表達式用內聯函數體來替換,所以在調用時不發生控制轉移。在類內部實現的函數都是內聯函數,可以不用inline定義;只有函數外部定義的內聯函數才必須加關鍵字inline。編譯系統并非對內聯函數必須使用內聯,而且根據具體情況決定。內聯函數不是必須要有返回值的。

      2語句int*P=&k;定義了指針P,與這個語句等效的語句序列是( )。

      A.int* p;P=&k;B.int * P;P=k;C.int * p;* P=&k;D.int * p;* P=k;

      參考答案:A

      參考解析:本題考查指針和地址,題目中定義了一個指向變量k的一個指針p,那么與題目中等效的表達式A選項,即先定義一個指向整型的指針,然后指向k的地址。

      3有如下程序:

      #include

      using namespace std;

      class A

      {

      public:

      A(){cout<<”A”;}

      -A(){cout<<”-A”;}

      };

      class B:public A

      {

      A*P;

      public:

      B(){cout<<”B”;P=new A();}

      -B(){cout<<”~B”; p;}

      };

      int main()

      {

      B obj;

      return 0;

      }

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

      A.BAA~A~B~AB.ABA~B~A~AC.BAA~B~A~AD.ABA~A~B~A

      參考答案:B

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

      4有如下類定義:

      class AA

      {

      im a:

      public:

      int getRef()const{return&a;}//①

      int getValue()const{return a;}//②

      void set(int n)const{a=n;}//③

      friend void show(AA aA.const{cout<

      };

      其中四個函數的定義中正確的是(  )。

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

      參考答案:B

      參考解析:本題考查常成員函數,常成員函數只能引用本類中的數據成員,而不能修改它。所以本題答案為B。

      5若要對Data類中重載的加法運算符成員函數進行聲明,下列選項中正確的是( )。

      A.Data+(DatA.;B.Data operator+(DatA.;C.Data+operator(DatA.;D.operator+(Data,DatA.;

      參考答案:B

      參考解析:根據重載加法運算符的格式,只有B選項正確。

      6有如下數組聲明:int num[10];,下標值引用錯誤的是( )。

      A.num[10]B.num[5]C.num[3]D.hum[o]

      參考答案:A

      參考解析:數組定義中的數字指的是數組的大小,而下標是從0開始的,所以本題中數組的最后一個元素是num[9]。

      7將前綴運算符“--”重載為非成員函數,下列原型中能正確用于類中說明的是(  )。

      A.DeCr&operator--(int);B.DeCr operator--(DeCr&,int);C.friend DeCr&operator--(DeCr&);D.friend DeCr operator--(DeCr&,int);

      參考答案:C

      參考解析:把“--”運算符重載為非成員(友元)函數格式:friend<返回類型>operator--()是前綴的格式;friend<返回類型>operator--(int)是后綴的格式。當然也可以有參數如題中C選項所示。

      8如果派生類以proteCted方式繼承基類,則原基類的proteCted成員和publiC成員在派生類中的訪問屬性分別是( )。

      A.publiC和publiCB.publiC和proteCtedC.proteCted和publiCD.proteCted和proteCted

      參考答案:D

      參考解析:本題考查保護繼承中派生類對基類的訪問屬性,在受保護繼承中,基類的公用成員和保護成員在派生類中成了保護成員,其私有成員仍為基類私有,所以本題答案為D。

      9在函數中,可以用aut0、extem、register和static這四個關鍵字中的一個來說明變量的存儲類型,如果不說明存儲類型,則默認的存儲類型是(  )。

      A.autoB.externC.registerD.static

      參考答案:A

      參考解析:變量的存儲方法分為靜態存儲和動態存儲兩大類,包含4種:自動的(auto)、靜態的(static)、寄存器的(register)、外部的(extem)。變量如果沒有說明存儲類型,那么默認就是aut0。

      10下列程序的輸出結果是( )。

      #include

      int rain(iltl a,int B)

      {

      if(a

      else retum b;

      retum 0;

      }

      void main()

      {

      eout<

      }

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

      參考答案:B

      參考解析:本題考查的是函數的調用,第一次調用min(2,3),因為2<3,所以返回值為2,第二次調用min(1,2),因為l<2,所以返回1。

      11在黑盒測試方法中,設計測試用例的主要根據是( )。

      A.程序內部邏輯B.程序外部功能C.程序數據結構D.程序流程圖

      參考答案:B

      參考解析:黑盒測試是對軟件已經實現的功能是否滿足需求進行測試和驗證,黑盒測試完全不考慮程序內部的邏輯結構和內部特性,只根據程序的需求和功能規格說明,檢查程序的功能是否符合它的功能說明,所以本題選擇B。

      12在面向對象方法中,不屬于“對象”基本特點的是(  )。

      A.一致性B.分類性C.多態性D.標識唯一性

      參考答案:A

      參考解析:對象有如下一些基本特點:標識唯一性、分類性、多態性、封裝性、模塊獨立性好。所以選擇A。

      13有以下程序:

      #include

      void fun(int a,int b,int C.

      { a=456,b=567,c=678;}

      void main()

      {

      int X=10,Y=20,Z=30;

      fun(X,Y,z);

      aout<

      }

      輸出結果是( )。

      A.30,20,10B.10,20,30C.456,567,678D.678,567,456

      參考答案:B

      參考解析:本題考查函數中變量的作用范圍,在主函數中給變餐x、Y、Z賦值,然后將其作為實參傳遞給了函數fun(),雖然在函數fun()中改變了這3個變量的值,但只是同名的局部變量,不影響函數中變量的值,所以在調用函數fun()結束后,主函數3個變量的值未改變。

      14對類的構造函數和析構函數描述正確的是( )。

      A.構造函數可以重載,析構函數不能重載

      B.構造函數不能重載,析構函數可以重載

      C.構造函數可以重載,析構函數也可以重載

      D.構造函數不能重載,析構函數也不能重裁

      參考答案:A

      參考解析:一個類中只能定義一個析構函數,否則會造成對同…對象的多次刪除;而構造函數可以根據不同的參數個數和類型進行多次重載。

      15通過運算符重載,可以改變運算符原有的(  )。

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

      參考答案:A

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

      16下列關于c++流的描述中,錯誤的是(  )。

      A.cout>>’A’表達式可輸出字符A

      B.eof()函數可以檢測是否到達文件尾

      C.對磁盤文件進行流操作時,必須包含頭文件fstream

      D.以ios_base::0ut模式打開的文件不存在時,將自動建立一個新文件

      參考答案:A

      參考解析:本題考查c++流,想要輸出字符“A”,則應該是cout<<“A”,所以本題答案為A。

      17耦合性和內聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是(  )。

      A.提高耦合性降低內聚性有利于提高模塊的獨立性

      B.降低耦合性提高內聚性有利于提高模塊的獨立性

      C.耦合性是指一個模塊內部各個元素間彼此結合的緊密程度

      D.內聚性是指模塊間互相連接的緊密程度

      參考答案:B

      參考解析:模塊獨立性是指每個模塊只完成系統要求的獨立的子功能,并且與其他模塊的聯系最少且接口簡單。一般較優秀的軟件設計,應盡量做到高內聚、低耦合,即減弱模塊之間的耦合性和提高模塊內的內聚性,有利于提高模塊的獨立性,所以A錯誤,B正確。耦合性是模塊間互相連接的緊密程度的度量而內聚性是指一個模塊內部各個元素間彼此結合的緊密程度,所以C與D錯誤。

      18若有如下類聲明:

      Class MyClass{ publiC:

      MyClass(  ){Cout<<1;} };

      執行下列語句

      MyClass a,b[2],*p[2]; 程序的輸出結果是(  )。

      A.11B.111C.1111D.11111

      參考答案:B

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

      19下列函數模板的定義中,合法的是(  )。

      A.templateT abs(T X){return x<07-x:X;}

      B.template ClassT abs(T x){return x<07-X:x;}

      C.template Tabs(T X){return x<07-x:X;}

      D.template T abs(T x){return X<0?-X:x;}

      參考答案:A

      參考解析:本題考查模板函數的基本概念.根據模板函數的定義,所以答案為A。

      20有如下程序:

      #include

      using namespace std;

      class Base{

      int x:

      public:

      Base(int n=0):x(n){cout<

      int getX()const{return x;}

      };

      cjass Derived:public Base{

      int Y:.

      J;;Iublic:

      Derived(int m,int n):y(m),Base(n){cout<

      Derived(int m):Y(m){cout<

      };

      int main()

      {

      Derived dl(3),d2(5,7);

      retum 0;

      }

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

      A.375B.357C.0375D.0557

      參考答案:C

      參考解析:本題考查派生類的構造函數和析構函數,在定義一個派生類的對象時,先調用基類的構造函數,然后再執行派生類的構造函數,對象釋放時,先執行派生類的析構函數。再執行基類的析構函數。本題中定義了一個對象d1,先執行基類的構造函數輸出0,再執行派生類的構造函數輸出3,然后定義了一個對象d2(5,7),其中需要調用基類的構造函數輸出7.最后輸出5,所以答案為c。

      二、簡單應用題(24分)

      請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中包含一個程序文件main.cpp,其中有日期類Date、人員類Person及排序函數sortByName和主函數main的定義。請在程序中的橫線處填寫適當的代碼并刪除橫線,以實現上述類定義和函數定義。此程序的正確輸出結果應為:

      按姓名排序

      排序前:

      張三 男 出生日期:1978年4月20日

      王五 女 出生日期:1965年8月3日

      楊六 女 出生日期:1965年9月5日

      李四 男 出生日期:1973年5月30日

      排序后:

      李四 男 出生日期:1973年5月30日

      王五 女 出生日期:1965年8月3日

      楊六 女 出生日期:1965年9月5日

      張三 男 出生日期:1978年4月20日

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

      #include

      using namespace std;

      class Date{//日期類

      int year,month,day;//年、月、日

      public:

      Date(int year,int month,int day):year(year),month(month),day(day){}

      int getYear()const{return year;}

      int getMonth()const{return month;}

      int getDay()const{return day;}

      };

      class Person{ //人員類

      char name[14];//姓名

      bool is—male;//性別,為true時表示男性

      Date birth—date;//出生日期

      public:

      Person(char*name,bool is—male,Date birth_date)

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

      :——————

      {

      {

      strcpy(this一>name,name);

      }

      const char * getName()const{return name;}

      bool isMale()const{return is—male;}

      Date getBirthdate()const{return birth—date;}

      //利用strcmp()函數比較姓名,返回一個正數、0或負數,分別表示大于、等于、小于

      int compareName(const Person&p)const{

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

      ————}

      void show(){

      cout<

      cout<

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

      __________________________//顯示出生月

      << “birth—date.getDay()<<”日”;//顯示出生日

      }

      };

      void sortByName(Person ps[],int size){

      //將人員數組按姓名排列為升序

      for(int i=0;i

      //采用選擇排序算法

      int m=i;

      for(int j=i+1;j

      if(ps[j].eompareName(ps[m])<0)

      m=j;

      if(m>i){

      Person P=ps[m];

      ps[m]=ps[i];

      ps[i]=p;

      }

      }

      }

      int main(){

      Person staff[]={

      Person(”張三”,true,Date(1978,4,20)),

      Person(”王五”,false,Date(1965,8,3)),

      Person(”楊六”,false,Date(1965,9,5)),

      Person(”李四”,tme,Date(1973,5,30))

      };

      const int size=sizeof(staff)/sizeof(staff[0]);

      int i;

      eout<

      cout<

      for(i=0;i

      sortByName(staff,size);

      cout<

      for(i_0;i

      cout<

      return 0;

      {

    【計算機二級C++基礎練習題】相關文章:

    計算機二級考試之C++基礎知識點03-05

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

    2017年計算機二級基礎練習題及答案03-10

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

    2017年計算機二級基礎知識練習題03-08

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

    計算機二級C++考試測試卷及答案02-27

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

    計算機應用基礎模擬練習題03-21

    主站蜘蛛池模板: 精品无码人妻夜人多侵犯18 | 日本精品久久久久影院日本| 日产精品一线二线三线芒果| 国产精品国产高清国产专区| 国产乱子伦精品无码码专区| 亚洲精品欧美精品日韩精品 | 在线精品国产一区二区三区| 国产精品日韩欧美在线第3页| 91精品国产高清久久久久久io| 欧美精品丝袜久久久中文字幕| 亚洲国产精品lv| 国产麻豆精品久久一二三| 久久久久九国产精品| 88国产精品欧美一区二区三区| 国产美女精品一区二区三区| 亚洲国产精品无码中文字| 日韩精品无码久久一区二区三| 国产精品夜色视频一级区 | 久久久久99精品成人片欧美| 亚洲精品国产精品乱码不卞| 精品无码久久久久久久久久| 99精品欧美一区二区三区| 国产精品手机在线| 国产成人亚洲精品青草天美| 人妻少妇精品中文字幕AV | 亚洲AV永久无码精品水牛影视| 久久久久一级精品亚洲国产成人综合AV区| 亚洲精品在线观看视频| 久草视频在线这里精品| 国产精品日本一区二区在线播放| 少妇精品无码一区二区三区| 亚洲精品乱码久久久久久不卡| 久久露脸国产精品| 精品日韩欧美国产| 国产午夜精品理论片久久| 国产精品女人呻吟在线观看| 97精品国产高清自在线看超 | 亚洲精品专区| 亚洲国产成人精品女人久久久| 欧美精品一区二区在线精品| 精品精品国产欧美在线小说区|