求学快递网是国内领先的B2M2C教育培训网上信息平台!

首页 | 分站加盟 | 课程发布 | 最新课程 | 最新机构 | 培训专题 | 全国分站 | 帮助中心

计算机等级考试_计算机等级考试报名_计算机考试成绩查询_求学快递网

计算机等级考试一步到位
您的位置:求学快递网 > 计算机等级考试 > 计算机二级 > 历年真题 > 2017河南计算机等级考试二级 C++上机试题5 - 正文内容

2017河南计算机等级考试二级 C++上机试题5

2017河南计算机等级考试二级 C++上机试题5

联 系 方 式 : 0 3 7 1 - 5 8 5 3 5 5 2 5

微     信 : 1 5 7 3 6 9 1 0 2 1 7

Q    Q : 2 4 2 4 1 9 8 9 1 7

一、改错题

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

  classBase
  classD1
  classD2
  classD3
  finBase

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

  #include
  classBase
  { public:
  Base(){cout<<"classBase"<
  voidf(){cout<<"finBase"<
  classD1:virtualpublicBase
  { public:
  D1(){cout<<"classD1"<
  voidf(){cout<<"finD1"<
  /**********found**********/
  classD2:publicBase
  { public:
  D2(){cout<<"classD2"<
  /**********found**********/
  classD3::publicD1,publicD2
  { public:
  D3(){cout<<"classD3"<
  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
  inlinelongsum(intn)
  {
  }
  voidmain()
  { intn;
  cout<<"输入n:";
  cin>>n;
  cout<<"结果为:"<

  【参考答案】

  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**”之后添加适当的语句。

  (4)完成Company类成员函数voidCompany::print()的定义,使其以"_ispaid_RMBforonemonth"的格式输出公司内所有员工的月薪信息。请在注释“//**4**”之后添加适当的语句。

  注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

  源程序清单如下:

  #include
  #include 
  classCEmployee
  { public:
  voidputname(charn[50]){strcpy(name,n);}
  voidgetname(charn[50]){strcpy(n,name);}
  voidputpay(doubled){pay=d;}
  doublegetpay(){returnpay;}
  private:
  //**1** };
  classCompany
  { private:
  CEmployee*emp;
  intnum;
  public:
  Company(intn);
  voidadd(intcode,charname[50],doublepay);
  voidprint(); };
  Company::Company(intn)
  { //**2** }
  voidCompany::add(intcode,charname[50],doublepay)
  { //**3** }
  voidCompany::print()
  { //**4**
  for(inti=0;i
  { (emp+i)->getname(c);
  money=(emp+i)->getpay();
  cout<
  "RMBforonemonth"<
  voidmain()
  { Companycom(2);
  com.add(0,"Jack",200);
  com.add(1,"Lee",300);
  com.print(); }

  【参考答案】

  (1)char name[50];
  double pay;

  (2)num=n;
  emp=new CEmployee[num];

  (3)(emp+code)->putname(name);
  (emp+code)->putpay(pay);

  (4)char c[50];
  double money;

  【试题解析】

  本题考查类成员的定义、类成员函数的定义与调用、对象数组的使用。注意指针和动态申请空间new的使用方法。使用指针调用成员应该用"->"符号,new的返回值是指针类型的。

 

             联 系 方 式 : 0 3 7 1 - 5 8 5 3 5 5 2 5

微     信 : 1 5 7 3 6 9 1 0 2 1 7

Q    Q : 2 4 2 4 1 9 8 9 1 7


相关推荐

计算机等级考试最新机试技巧
计算机等级考试高效利用技巧

最新计算机资讯

热点专题

计算机等级考试经验技巧分享

关于本站  诚征英才  广告服务  招生服务  免责声明  分站加盟  VIP会员  联系我们  网站地图  网站记事

版权所有 CopyRight 2008-2017 粤ICP备14009694号 www.studyems.com, Inc. All Rights Reserved
违法和不良信息举报邮箱:2881796407@qq.com 举报电话: