一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

計算機二級C++上機模擬試題

時(shí)間:2025-09-11 01:11:40 試題

2016年計算機二級C++上機模擬試題

  計算機二級C++考試按照新大綱需要學(xué)習的內容有:C++語(yǔ)言概述、C++語(yǔ)言數據類(lèi)型、運算符和表達式、基本控制語(yǔ)句、數組、指針與引用、函數、類(lèi)和對象繼承、模板等內容。以下為大家整理了關(guān)于C++上機模擬考試題,希望能幫助到大家!

2016年計算機二級C++上機模擬試題

  一、改錯題

  使用VC6 打開(kāi)考生文件夾下的工程kt12_1 ,此工程包含一個(gè)源程序文件kt12_1.cpp ,但該程序運行有問(wèn)題,請改正函數中的錯誤,使該程序的輸出結果為:

  100

  源程序文件kt12_1.cpp 清單如下:

  #include

  template

  class pair

  {

  T value1,value2;

  public:

  pair(T first,T second)

  {value1=first;value2=second;}

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

  char getmax();

  };

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

  T pair::getmax()

  {

  T retval;

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

  retval=value1>value2??value1:value2;

  return retval;

  }

  void main()

  {

  pairmyobject(100,75);

  cout<

  }

  【說(shuō)明】題目里的#include

  如果改為#include

  using namespace std;

  會(huì )導致該題目中的pair 與標準庫的pair 重名,而報錯。

  如果要改用標準庫,則該題目pair 的名字需要修改例如改為pair1

  【參考答案】

  (1 )將char getmax (); 改為:T getmax ();

  (2 )缺少模板的聲明,前面需要加上:template

  (3 )將retval = value1>value2?? value1 : value2;

  改為:retval = value1>value2? value1 : value2;

  【試題解析】

  (1 )主要考查對模板使用的理解,該函數屬于模板類(lèi)定義的一部分,對于返回值類(lèi)型,應該使用模板類(lèi)名稱(chēng)T ,這樣編譯的時(shí)候才能被接受;

  (2 )主要考查是模板的使用,前面的模板類(lèi)已經(jīng)聲明完成了,在類(lèi)的外面定義類(lèi)的成員函數時(shí)仍然需要使用模板的聲明,這樣在后面的函數定義體中才能使用模板類(lèi);

  (3 )主要考查對“ 表達式1? 表達式2 : 表達式3” 語(yǔ)句的掌握,這個(gè)語(yǔ)句是一個(gè)復合語(yǔ)句,先計算第一個(gè)表達式,如果為真則整個(gè)式子值為表達式2 的值,否則為表達式3 的值,題目中錯誤的使用了兩個(gè)問(wèn)號。

  #include

  using namespace std;

  template

  class pair1

  {

  T value1,value2;

  public:

  pair1(T first,T second)

  {value1=first;value2=second;}

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

  T getmax();/pic/p>

  };

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

  template T pair1::getmax()/pic/p>

  {

  T retval;

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

  retval=value1>value2?value1:value2;/pic/p>

  return retval;

  }

  void main()

  {

  pair1myobject(100,75);

  cout<

  }

  二、簡(jiǎn)單應用題

  請編寫(xiě)函數fun() ,其功能是將s 所指字符串中除了下標為奇數、同時(shí)ASCII 值也為奇數的字符之外,其余的所有字符都刪除。字符串中剩余的字符所形成的一個(gè)新的字符串放在t 所指的數組中。

  例如:s 所指字符串中的內容為ABCDEFG12345 ,其中字符A 的ASCII 碼值雖為奇數,但元素所在的下標為偶數,因此必需刪除;字符1 的ASCII 碼值為奇數,所在數組中的下標也為奇數,不刪除,最后t 所指的數組中的內容應是135 。

  請勿修改主函數main 和其他函數中的任何內容,僅在函數fun 的花括號中填寫(xiě)若干語(yǔ)句。

  文件kt12_2.cpp 的內容如下:

  #include

  #include/pic/p>

  #include

  #include/pic/p>

  using namespace std;

  void fun(char*s,char t[])

  {

  }

  void main()

  {

  char s[100],t[100];

  cout<<"Please enter string S:"<

  gets(s);

  fun(s,t);

  puts(t);

  }

  【參考答案】

  void fun(char *s,char t[ ])

  { int i,j=0,n;

  n=strlen(s);

  for(i=0;i

  if(i%2!=0&&s[i]%2!=0)

  { t[j]=s[i];j++;}

  t[j]='\0'; }

  【試題解析】

  本體的解題思路是要先搞清楚在字符參與數值運算時(shí),用的是其ASCII 碼值來(lái)進(jìn)行計算。其次是判斷某數是奇數的方法,即判斷該數與2 的余數是否為0 。

  【調試過(guò)程】

  #include

  #include/pic/p>

  #include

  #include/pic/p>

  using namespace std;

  void fun(char*s,char t[])

  {

  int len,j=0,m;

  len=strlen(s);

  /pic/p>

  /pic/pic/p>

  /pic/p>

  /pic/p>

  for(int i=1;i

  {

  /pic/p>

  if(s[i]%2==1){t[j]=s[i];j++;}/pic/p>

  /pic/p>

  }

  /pic/p>

  /pic/p>

  /* int m;

  m=s[0]%2;

  cout<

  */

  /* int ascii;

  char a = 'c';

  ascii = (int)a;

  cout<

  */

  /* int ascii;

  char a = s[0];

  ascii = (int)a;

  cout<

  */

  m=j;

  for(int k=m;k<100;k++)/pic/p>

  {

  t[j]=NULL;

  j++;

  }

  }

  void main()

  {

  char s[100],t[100];

  cout<<"Please enter string S:"<

  gets(s);

  fun(s,t);

  puts(t);

  }

  【優(yōu)化答案】

  三、綜合應用題

  使用VC6 打開(kāi)考生文件夾下的工程kt12_3 。此工程包含一個(gè)kt12_3.cpp ,其中定義了類(lèi)ARRAY ,但類(lèi)的定義并不完整。請按要求完成下列操作,將程序補充完整。

  (1 )完成類(lèi)ARRAY 的帶一個(gè)參數的構造函數,參數i 為int 型,如果i 不是正數則輸出錯誤信息并退出,否則申請int 型的大小為i 的空間,然后把i 賦值給類(lèi)的數據成員num 。請在注釋“/pic/p>

  (2 )完成類(lèi)ARRAY 的拷貝初始化構造函數,注意解決重復刪除的問(wèn)題,請在注釋“/pic/p>

  (3 )完成類(lèi)ARRAY 的重載的運算符函數[] ,參數i 為int 型,如果i 超界則輸出錯誤信息并退出,否則把下標為i 的元素返回,請在注釋“/pic/p>

  (4 )完成類(lèi)ARRAY 的重載的運算符函數= ,同樣需要注意解決重復刪除的問(wèn)題,不能只是簡(jiǎn)單的賦值,請在注釋“/pic/p>

  注意:除在指定位置添加語(yǔ)句之外,請不要改動(dòng)程序中的其他內容。

  源程序文件kt12_3.cpp 清單如下:

  #include

  #include

  class ARRAY

  {

  private:

  int *p,num;

  public:

  ARRAY(){p=new int[10],num=10;}

  ARRAY(int i)

  { /pic/p>

  { cout<<" 錯誤! 數組長(cháng)度應為正。\n";

  exit(0);

  }

  p=new int[i];

  num=i;

  }

  ARRAY(const ARRAY &a);

  int &operator[](int i);

  ~ARRAY(){delete p;}

  ARRAY &operator=(const ARRAY &a);

  friend ARRAY operator+(ARRAY &a,ARRAY &b);

  friend ostream& operator<<(ostream &os,ARRAY &a);

  };

  ARRAY::ARRAY(const ARRAY &a)

  {

  /pic/p>

  for(int i=0;i

  p[i]=a.p[i]; }

  int &ARRAY::operator[](int i)

  { /pic/p>

  {

  cout<<" 越界訪(fǎng)問(wèn)!";

  exit(0);

  }

  return p[i];

  }

  ARRAY &ARRAY::operator=(const ARRAY &a)

  {

  num=a.num;

  p=new int[num];

  for(int i=0;i

  p[i]=a.p[i];

  /pic/p>

  }

  ARRAY operator+(ARRAY &a,ARRAY &b)

  {

  if(a.num!=b.num)

  {

  cout<<" 數組長(cháng)度不相同!"<

  exit(0);

  }

  ARRAY t(a.num);

  for(int i=0;i

  t.p[i]=a.p[i]+b.p[i];

  return t;

  }

  ostream &operator<<(ostream &os,ARRAY &a)

  {

  int i=0;

  for(;i

  {

  cout<

  if(!((i+1)%10))cout<

  return os; }

  void main()

  { ARRAY a(3);

  a[0]=a[1]=a[2]=3;

  cout<<'a'<

  ARRAY b(a);

  cout<<'b'<

  ARRAY c(2);

  c=a+b+b;

  cout<<'c'<

  c=((b=(a+b))+c);

  cout<<'a'<

  a[7]=3;

  cout<

  }

  【參考答案】

  (1 )if(i<=0)

  (2 )num=a.num;

  p=new int[num];

  (3 )if(i>=num||i<0)

  (4 )return *this;

  【試題解析】

  主要考查對一個(gè)特殊的類(lèi)-- 安全 數組的掌握,其中涉及了友元函數、重載函數等,其中(2 )中必需申請新的空間,這樣可以使得兩個(gè)對象分別占用不同的兩個(gè)空間,在自動(dòng)調用析構函數時(shí)不會(huì )遇到重復刪除的問(wèn)題,這種方法要掌握。

  這里頭文件如果改為:#include

  #include 會(huì )報錯。fatal error C1001: INTERNAL COMPILER ERROR

  (compiler file 'msc1.cpp', line 1786)

  error C2433 :'ostream' : 'friend' not permitted on data declarations

  #include

  #include

  class ARRAY

  {

  private:

  int *p,num;

  public:

  ARRAY(){p=new int[10],num=10;}

  ARRAY(int i)

  { /pic/p>

  if(i<=0)

  { cout<<" 錯誤! 數組長(cháng)度應為正。\n";

  exit(0);

  }

  p=new int[i];

  num=i;

  }

  ARRAY(const ARRAY &a);

  int &operator[](int i);

  ~ARRAY(){delete p;}

  ARRAY &operator=(const ARRAY &a);

  friend ARRAY operator+(ARRAY &a,ARRAY &b);

  friend ostream& operator<<(ostream& os,ARRAY& a);

  };

  ARRAY::ARRAY(const ARRAY &a)

  {

  /pic/p>

  num=a.num;

  p=new int[num];

  for(int i=0;i

  p[i]=a.p[i]; }

  int &ARRAY::operator[](int i)

  { /pic/p>

  if (i>=10||i<0)

  {

  cout<<" 越界訪(fǎng)問(wèn)!";

  exit(0);

  }

  return p[i];

  }

  ARRAY &ARRAY::operator=(const ARRAY &a)

  {

  num=a.num;

  p=new int[num];

  for(int i=0;i

  p[i]=a.p[i];

  /pic/p>

  return *this;

  }

  ARRAY operator+(ARRAY &a,ARRAY &b)

  {

  if(a.num!=b.num)

  {

  cout<<" 數組長(cháng)度不相同!"<

  exit(0);

  }

  ARRAY t(a.num);

  for(int i=0;i

  t.p[i]=a.p[i]+b.p[i];

  return t;

  }

  ostream &operator<<(ostream &os,ARRAY &a)

  {

  int i=0;

  for(;i

  {

  cout<

  if(!((i+1)%10))cout<

  return os; }

  void main()

  { ARRAY a(3);

  a[0]=a[1]=a[2]=3;

  cout<<'a'<

  ARRAY b(a);

  cout<<'b'<

  ARRAY c(2);

  c=a+b+b;

  cout<<'c'<

  c=((b=(a+b))+c);

  cout<<'a'<

  a[7]=3;

  cout<

  }

【計算機二級C++上機模擬試題】相關(guān)文章:

2016計算機二級C++上機模擬試題及答案01-16

計算機二級《C++》上機試題及答案12-31

2016計算機二級C++上機試題及答案11-25

2016年計算機二級C++上機考試模擬試題及答案11-22

計算機二級《C++》上機考前沖刺試題10-01

計算機二級C++上機考試試題02-14

全國計算機二級《C++》上機試題及答案12-06

計算機二級C++模擬試題及答案01-23

2015計算機二級Access上機模擬試題10-15

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看