计算机等级 > 二级考试 > C++语言程序设计 > C++模拟试题 > 文章内容

全国计算机二级考试C++语言程序设计上机考试试题及答案(10)

2017-7-4编辑:daibenhua

全国计算机二级考试C++语言程序设计上机考试试题及答案

  一、程序改错题

  使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为

  Constructor,i=0,

  Destructor

  注意:错误的语句在//******error******的下面,修改该语句即可。

  试题程序:

  #include(iostream.h)

  classTC

  {

  inti;

  public:

  TC();

  voiddisplay();

  ~TC();

  };

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

  TC:TC()

  {

  cout<<"Constructor"<<",";

  i=0;

  )

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

  TC:display()

  {

  tout<<"i="<  }

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

  TC:TC()

  {

  COUI<<"Destructor"<  }

  voidmain()

  {

  TCa;

  a.display();

  }

  二、简单应用题

  使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,实现函数sort(intA[],intn),用选择排序法将数组从大到小排序。

  提示:选择排序法的思想是

  (1)反复从还未排好序的那部分线性表中选出关键字最小的结点。

  (2)按照从线性表中选出的顺序排列结点,重新组成线性表。

  (3)直到未排序的那部分为空,使得重新形成的线性表是一个有序的线性表。

  补充函数sort(intA[],intn),实现选择排序。

  注意:请勿改动主函数。

  试题程序:

  #include

  #defineN10

  voidsort(intA[N],intn)

  {

  }

  intmain()

  intA[N]={-72,54,-6,7,18,102,0,4,-11,1};

  sort(A,10);

  for(inti=0;i(sizeof(A)/sizeof(int);i++)

  {

  cout<  }

  cout<  return0;

  }

  三、综合应用题

  使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。每卖出一个水果,则计算水果的重量,还要计算所有卖出水果的总重量以及总个数,同时允许退货,请按照以下的操作,把类补充完整。

  (1)定义类TCFruit的私有静态数据成员float型变量AllWeight和int型变量AllN0,请在注释1后添加适当的语句。

  (2)完成类TCFruit的带一个float型变量w的构造函数,并把这个w加到AllWeight中,并且AllNo自加。请在注释2后添加适当的语句。

  (3)在析构函数中,在AllWeight中减去weight,然后AllNo自减,请在注释3后添加适当的语句。

  (4)完成静态成员变量的初始化为0,请在注释4后添加适当的语句。

  注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。

  试题程序:

  #include(iostream.h>

  classTCFruit

  {

  private:

  floatWeight;

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

  staticintAllNo;

  public:

  TCFruit(floatw)

  {

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

  AllWeight+=w:

  AllNo++:

  }

  ~TCFruit()

  {

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

  AllWeight-=Weight:

  }

  voiddisplay()

  {

  cout<<"SellaFruitwith"<  endl;

  cout<<”Allsellnumber:"<  cout<<"Allsellweight:"<  endl<  }

  };

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

  floatTCFruit::AllWeight=0.0;

  intmain()

  {

  TCFruitFruitl(1.2);

  Fruitl.display();

  TCFruitFruit2(2.3);

  Fruit2.display();

  return0;

  }

  上机考试试题答案与解析

  一、程序改错题

  (1)应改为“TC::TC()”。

  (2)应改为“voidTC::display()”。

  (3)应改为“TC::~TC()”。

  【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“::”,作用域运算符用采表示某个成员属于哪个类,使用格式为“(类名)::<成员函数>((参数函数)),因此第1处应改为“TC::TC()”,默认构造函数没有参数。由第2处“TC::display()”后的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错误问题,display函数返回值为void,因此第2处的语句应改为“voidTC::display()”。由第3处的语句“TC::TC()”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加“~”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC::~TC()”。

  二、简单应用题

  inti,j;

  for(i=O;i  {

  for(j=0;j  {

  if(A[j]>A[j+1])//如果前面的数比后面的大则

  进行交换

  {

  intt=A[j];//进行交换

  A[j]=A[j+1];

  A[j+1]=t;

  }

  }

  }

  【解析】数组A[N]中有n个数,进行n-1次比较,在每一次比较中两两比较的次数逐渐减少,比如若有6个数9,

  8,5,4,2,0。第一次将8和9对调,第二次将第2个数9和第3个数5对调,如此共进行5次,得到8-5-4-2-0-9的顺序,可以看到:最大的数9已“沉底”,成为最下面一个数,而小的数“上升”。最小的数0已向上“浮起”一个位置。经第一趟(共5次)后,已得到最大的数,然后进行第二趟比较,对余下的前面5个数按上面的方法进行比较,经过4次比较,得到次大的数8。如此进行下去。可以推知,6个数要比较5趟。在第一趟中要进行两两比较5次,在第二趟中比较4次,……第5趟比较1次。因此设置两层循环,外层循环变量i从O变化大到n-1,内层循环变量j从0到n-j,在内层循环体内,比较相邻两数,如果前面比后面的大则交换。在内层循环体内,如果前面的元素比后面的元素大,则用一个临时变量记录前面的第j个元素,然后将第j+1个元素赋值给第j个元素,临时变量值赋给第j+1个元素,如此完成两个元素的交换。

  三、综合应用题

  (1)应添加“staticfloatAllWeight;”。

  (2)应添加“Weight=w;”。

  (3)应添加“AllNo--;”。

  (4)应添加“intTCFruit::AllNo=0;”。

  【解析】静态数据成员声明时需使用关键字static,因此第1处应添加“staticfloatAllWeight;”。构造函数用来对类成员进行初始化,在TCFruit类的构造函数TCFruit(floatw)中,完成weight的初始化,并把这个w加到AllWeight中,并且AllNo自加,因此第2处应添加“weight=w;”。调用析构函数相当于退出,这时AllWeight中减去weight,然后AllNo自减,因此第3处应添加“AllNo--;”。静态数据成员的初始化格式为“<数据类型><类名>::(静态数据成员>=(初始值)”,因此第4处应添加“intTCFruit::AllNo=0;”。

全国计算机二级考试C++语言程序设计上机考试试题及答案(9)

热点推荐

登录注册
触屏版电脑版网站地图