计算机等级考试二级C++模拟题及解析9(上机)

日期:12-29| http://www.59wj.com |二级C++上机题库|人气:864

计算机等级考试二级C++模拟题及解析9(上机)

计算机等级考试二级C++模拟题及解析9上机部分

  一、改错题

  使用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)派生类的构造函数,初始化基类的参数,调用基类的构造函数时,使用符号“:”,而不是“::”;

  .
       
        www.59wj.com

  二、简单应用题

  编写函数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求平方根。

  .
       
        www.59wj.com

  三、综合应用题

  使用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++类知识的一个综合考核。对虚函数的定义格式及继承类构造函数的定义格式请多加注意。

  .
       
        www.59wj.com 如果觉得《计算机等级考试二级C++模拟题及解析9(上机)》二级C++上机题库,jsj不错,可以推荐给好友哦。
本文Tags: 计算机等级考试 - 上机题库 - 二级C++上机题库,jsj,
在百度中搜索相关文章:计算机等级考试二级C++模拟题及解析9(上机)
在谷歌中搜索相关文章:计算机等级考试二级C++模拟题及解析9(上机)
在soso中搜索相关文章:计算机等级考试二级C++模拟题及解析9(上机)
在搜狗中搜索相关文章:计算机等级考试二级C++模拟题及解析9(上机)
相关分类导航|
热门推荐|