查文庫>試題> 計算機二級考試C++上機考試試題

計算機二級考試C++上機考試試題

計算機二級考試C++上機考試試題

  計算機二級考試有分筆試題以及上機操作題,下面就是小編跟大家分享計算機二級考試C++上機考試試題,歡迎大家閱讀!

  一、程式改錯題

  使用VC++6.0開啟考生資料夾下的源程式檔案1.cpp,該程式執行時有錯誤,請改正錯誤,使程式正常執行,並且要求最後一個catch必須丟擲執行的任何異常。

  程式異常,輸出資訊為

  error

  O

  ERROR

  注意:不要改動main函式,不能增加或刪除行,也不能更改程式的結構,錯誤的語句在//******error******的下面。

  試題程式:

  #include<iostream.h) style="font-family: "Microsoft Yahei"; white-space: normal; color: rgb(51, 51, 51);"

  intmain()

  {

  try

  {

  throw("error");

  }

  //********error********

  catch(chars)

  {

  cout<<s<<endl;

  }

  try

  {

  throw((int)0);

  }

  //********error********

  catch()

  {

  cout<<i<<endl;

  }

  try

  {

  throw(O);

  throw("error");

  }

  //********error********

  catch()

  {

  cout<<"ERROR"<<endl;

  }

  return0;

  }

  二、簡單應用題使用VC++6.0開啟考生資料夾下的源程式檔案2.cpp。請補充完整程式fun(inti),使其完成以下功能:如果i=5,則輸出如下5行#號。

  #

  ##

  ###

  ####

  #####

  注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構。

  試題程式:

  #include

  voidfun(inti)

  {

  }

  intmain()

  {

  fun(5);

  return0;

  }

  三、綜合應用題使用VC++6.0開啟考生資料夾下的源程式檔案3.cpp。程式透過繼承關係,實現對姓名的控制。類TC1實現對名字訪問的介面,TC2實現對名字的設定和輸出。

  程式輸出為

  TC2Name

  May

  其中定義的類並不完整,按要求完成下列操作,將類的定義補充完整。

  (1)在類TCl中定義介面函式GetName為純虛擬函式。請在註釋1後新增適當的.語句。

  (2)函式GetName2用於獲得名字的快取,但只獲得允許讀操作這個快取,請在註釋2後新增適當的語句。

  (3)實現TC2的建構函式,請在註釋3後新增適當的語句。

  (4)完成TC2的建構函式,實現對名字的處理。請在註釋4後新增適當的語句。

  注意:增加或者修改程式碼的位置已經用符號表示出來,請不要修改其他的程式程式碼。

  試題程式:

  #include

  classTC1

  {

  public:

  //********1********

  };

  classTC2:publicTCl

  {

  public:

  voidGetName()

  {

  cout<<"TC2Name"<<endl;

  }

  //********2********

  {

  returnm_str;

  }

  //********3********

  {

  inti:

  for(i=0;str[i]!=0;i++)

  m_str[i]=str[i];

  //********4********

  }

  private:

  charm_str[32];

  };

  voidmain()

  {

  TCl*P;

  TC20bj1("May");

  p=&objl;

  p->GetName();

  cout<<obj1.getnamc2()<<endl;

  return;

  }

  一、程式改錯題(1)應改為“catch(char*s)”。

  (2)應改為“cateh(inti)”。

  (3)應改為“catch(…)”。

  【解析】本題中第1個標識前的異常丟擲語句為“throw("error");”,其中的型別為字串。所以對應的異常捕捉語句catch中應該符合這個型別,而程式中給出的語句“catch(chars)”是字元型的,所以第1處的語句修改為“catch(char*S)”。第2個標識前的異常丟擲語句為“throw((int)0);”,其中的型別為int。對應的異常捕捉語句catch中應該符合這個型別,所以補充catch子句中的型別,否則如果找不到匹配的catch塊,系統就會呼叫一個系統函式,使程式終止執行。即第2處的語句修改為“catch(inti)”。如果在catch子句中沒有指定異常資訊的型別,那麼就用刪節號“…”表示它可以捕捉任何型別的異常資訊,即修改為“catch(…)”。

  二、簡單應用題for(intj=0;j(i;j++)//行迴圈

  {

  for(intk=0;k<=j;k++)//列迴圈

  cout<<"#";//輸出“#”

  cout<<endl; style="font-family: "Microsoft Yahei"; white-space: normal; color: rgb(51, 51, 51);"

  }

  【解析】本題首先利用for迴圈進行外層迴圈,輸出對應的i行,然後利用for迴圈進行內層迴圈,輸出對應i行的i列。

  三、綜合應用題(1)應新增“virtualvoidGetNamt!()=0;”。

  (2)應新增“constchar*GetName2()”。

  (3)應新增“TC2(char*str)”。

  (4)應新增“m_str[i]=0;”。

  【解析】本題第1處要求“在類TC1中定義介面函式GetName,為純虛擬函式”。在C++中,在基類中用virtual宣告成員函式為虛擬函式。純虛擬函式是在宣告虛擬函式時被“初始化”為0的函式,即“virtualvoidGetName()=0;”。第2處要求“函式GetName2實現獲得名字的快取,但只獲得讀允許操作這個快取”。只能引用資料成員,而不能修改,所以使用常成員函式,其一般形式為“const函式型別函式名”,即“constchar*GetName2()”。第3處要求“實現TC2的建構函式”。TC2的建構函式與類TC2的名稱應該相同,而且第3處的大括弧中是對字元陣列str的操作,所以類TC2的建構函式中的引數為str,即這裡補全為“TC2(char*str)”。第4處要求“完成TC2的建構函式,實現對名字的處理”,補全類TC2的建構函式,建構函式中的名字變數str對應於類TC中的成員變數m_str,所以這裡補全變數賦值操作“m_str[i]=0;”。

熱門文章
  • 1