首页>计算机等级考试>模拟试题>正文
2010年下半年计算机等级考试二级C++上机试题及解析(五)

www.zige365.com 2010-7-6 14:16:13 点击:发送给好友 和学友门交流一下 收藏到我的会员中心
一、改错题

  使用VC6打开考生文件夹下的工程kt10_1,此工程包含一个源程序文件kt10_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:

  classBase

  classD1

  classD2

  classD3

  finBase

  源程序文件kt10_1.cpp清单如下:

  #include<iostream.h>

  classBase

  { public:

    Base(){cout<<"classBase"<<endl;}

    voidf(){cout<<"finBase"<<endl;} };

  classD1:virtualpublicBase

  { public:

    D1(){cout<<"classD1"<<endl;}

    voidf(){cout<<"finD1"<<endl;} };

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

  classD2:publicBase

  { public:

    D2(){cout<<"classD2"<<endl;} };

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

  classD3::publicD1,publicD2

  { public:

    D3(){cout<<"classD3"<<endl;} };

  voidmain()

  { D3d;

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

    d.f(); }

  【参考答案】

  (1)将class D2:public Base

       改为:class D2:virtual public Base

  (2)将class D3::public D1,public D2

       改为:class D3:public D1,public D2

  (3)将d.f();改为:d.Base::f();

  【试题解析】

  (1)主要考查对虚基类的理解,虚基类可以解决二义性的问题,其定义方式是在继承列表中使用virtual关键字,使用虚基类可以避免程序运行中对基类函数调用的不惟一;

  (2)主要考查对类的定义方法的掌握,“::”为作用域符,此处应该使用“:”,因为后面是继承列表;

  (3)主要考查对虚基类函数调用过程的理解,只有使用"::"限定才能访问基类函数,否则将会调用自身的函数,如果该类没有该函数的定义,则会自动调用其父类的该函数,所以必须使用“::”符号。

二、简单应用题

  请编写一个函数inlinelongsum(intn),用递归函数完成运算:sum(n)=1*1+2*2+???+n*n,递归表达式为sum(n)=sum(n-1)+n2。

  注意:部分源程序已存在文件kt10_2.cpp中。

  请勿修改主函数main和其他函数中的任何内容,仅在函数sum的花括号中填写若干语句。

  文件kt10_2.cpp的内容如下:

  #include<iostream.h>

  inlinelongsum(intn)

  {

  }

  voidmain()

  { intn;

    cout<<"输入n:";

    cin>>n;

    cout<<"结果为:"<<sum(n)<<endl; }

  【参考答案】

  inline long sum(int n)

  { if(n==1)

    return 1;

    else
 
    return n*n+sum(n-1); }

  【试题解析】

  本题考查对递归函数掌握的熟练程度。递归的终止条件为n=1时,值为1。

三、综合应用题

  使用VC6打开考生文件夹下的工程kt10_3,此工程包含一个源程序文件kt10_3.cpp,其中定义了用于表示雇员信息的CEmployee类与表示公司信息的Company类,但这两个类的定义并不完整。请按要求完成下列操作。

  (1)定义Cemployee类的私有数据成员name(大小为50的字符数组)和pay(double型数据),分别用于记录雇员姓名和月薪。请在注释“//**1**”之后添加适当的语句。

  (2)完成Company类默认构造函数的定义,该构造函数将n值赋值给私有成员num,并完成指针emp所指的n个Cemployee对象空间的申请,请在注释“//**2**”之后添加适当的语句。

  (3)完成Company类成员函数voidCompany::add(intcode,charname[50],doublepay)的定义,该函数将某一雇员的编号code、姓名name及月薪pay输入到公司信息中。请在注释“//**3**”之后添加适当的语句。

本新闻共2页,当前在第1页  1  2  

我要投稿 新闻来源: 编辑: 作者:
相关新闻