就业数据资源平台
当前位置:首页 > C++语言程序设计
2013年计算机二级考试C++精选试题及答案8

一、改错题
  使用VC6打开考生文件夹下的工程kt14_1,此工程包含一个源程序文件kt14_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:
  A:noparameters
  B:intparameter
  A:noparameters
  B:intparameter
  C:intparameter
  源程序文件kt14_1.cpp清单如下:
  #include
   classA
  { /*****************found*****************/
  private:
  A(){cout<<"A:noparameters\n";}
  A(inta){cout<<"A:intparameter\n";} };
  classB:publicA
  { public:
  B(inta){cout<<"B:intparameter\n";} };
  /*****************found*****************/
  classC:publicB,publicA
  { public:
  /*****************found*****************/
  C(inta)::B(a){cout<<"C:intparameter\n";} };
  voidmain()
  { Bb(1);
  Cc(2); }
  【参考答案】
  (1)将private:改为:public:
  (2)将class C:public B,public A改为:class C:public B
  (3)将C(int a)::B(a){cout<<"C: int parameter\n"; }
  改为:C(int a):B(a){cout<<"C: int parameter\n";}
  【试题解析】
  (1)一个类的构造函数和析构函数可以由系统自动生成,也可以由用户提供,但构造函数和析构函数都必须是该类的公有成员函数,否则编译时将出现错误,不能被调用;
  (2)A已经是B的基类,C公有继承B,A也就成为了C的基类,根据程序的运行结果可知,C是要公有继承B;
  (3)派生类的构造函数,初始化基类的参数,调用基类的构造函数时,使用符号“:”,而不是“::”;
 二、简单应用题
  编写函数fun(),它的功能是求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并做为函数值返回。
  例如:n为1000时,函数值应为s=153.909064。
  注意:部分源程序给出如下。
  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
  试题程序:
  #include
   #include 来源:考试大网
   #include
   doublefun(intn)
  { main()
  { clrscr();
  printf("s=%f\n",fun(1000)); }
  【参考答案】
  double fun(int n)
  { double s=0.0;
  int i;
  for(i=0; i
  /*从0~n中找到既能被3整除同时又能被7整除的数,并将这些数求和*/
  if(i%3==0&&i%7==0)
  s=s+i;
  s=sqrt(s); /*对s求平方根*/
  return s; }
  【试题解析】
  本题的解题思路是:逐个取得从0~n之间的所有数,对每次取得的数进行条件判断,条件是既能被3整除同时又能被7整除,注意:这两个条件要求同时成立,因此用到了“&&”运算符。满足条件,该数就被累加到s中去,所有符合条件的数找完后,用sqrt()函数对s求平方根。

三、综合应用题
  使用VC6打开考生文件夹下的工程kt14_3。此工程包含一个kt14_3.cpp,其中定义了二维坐标类Coordinate和三维坐标类ThreeDCoord,其中ThreeDCoord类由Coordinate类public派生,但两个类的定义并不完整。请按要求完成下列操作,将程序补充完整。
  (1)定义类Coordinate的保护数据成员x和y,它们都是int型的数据,代表二维坐标的横纵坐标值。请在注释“//**1**”之后添加适当的语句。
  (2)根据类Coordinate定义后的成员函数Display的实现,补充该函数在类Coordinate定义体内的声明,Display为二维坐标类的虚函数。请在注释“//**2**”之后添加适当的语句。
  (3)完成二维坐标类Coordinate的构造函数,将参数a和b分别赋值给数据成员x和y。请在注释“//**3**”之后添加适当的语句。
  (4)根据ThreeDCoord类构造函数的声明,补充ThreeDCoord构造函数的实现,参数a和b通过调用基类的构造函数来初始化基类的数据成员x和y,c赋值给数据成员z。请在注释“//**4**”之后添加适当的语句。
  输出结果如下:
  [1,2]  


  [3,4,5]
  注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
  源程序文件kt14_3.cpp清单如下:
  #include
   classCoordinate
  { protected:
  //**1**
  public:
  Coordinate(inta=0,intb=0);
  //**2** };
  Coordinate::Coordinate(inta,intb)
  { //**3** }
  voidCoordinate::Display()const
  { cout<<'['<
  classThreeDCoord:publicCoordinate
  { intz;
  public:
  ThreeDCoord(inta=0,intb=0,intc=0);
  virtualvoidDisplay()const; };
  //**4**
  voidThreeDCoord::Display()const
  { cout<<'['<
  voidmain()
  { Coordinatec(1,2);
  ThreeDCoordt(3,4,5);
  c.Display();
  t.Display(); }
  【参考答案】
  (1)protected:
  int x;
  int y;
  (2)virtual void Display() const;
  (3)x=a; y=b;
  (4)ThreeDCoord::ThreeDCoord(int a, int b, int c) : Coordinate(a, b)
  【试题解析】
  本题主要考查对类数据成员的定义、构造函数、派生类及虚函数的理解,是C++类知识的一个综合考核。对虚函数的定义格式及继承类构造函数的定义格式请多加注意。

就业数据资源平台