当前位置:首页 > 全部子站 > IT > 等级考试

2018年12月计算机二级C语言冲刺试题及答案(1)

来源:长理培训发布时间:2018-11-27 21:50:23

   程序改错题

 
  使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为
 
  TC1
 
  TC2
 
  注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
 
  试题程序:
 
  #include
 
  #include  structTCO
 
  {
 
  //********error********
 
  virtualvoidfun();
 
  };
 
  classTCl:publicTCO
 
  {
 
  voidfun()
 
  {
 
  cout<<"TCl"<  }
 
  };
 
  classTC2:publicTCO
 
  {
 
  voidfun()
 
  {
 
  cout<<"TC2"<  }
 
  };
 
  voidmain()
 
  {
 
  TCO"P;
 
  TClobj1;
 
  TC2obj2;
 
  //********error********
 
  p=*obj1;
 
  p->fun();
 
  //********error********
 
  p=*obj2;
 
  p->fun();
 
  return;
 
  }
 
  参考答案:
 
  (1)应改为“virtualvoidfun()=0;”。
 
  (2)应改为“p=&obj1;”。
 
  (3)应改为“p=&obj2;”。
 
  【解析】如果在基类中不使用这个虚函数,其返回值也是没有意义的,它应该被定义为纯虚函数。所以虚函数fun应该是纯虚函数,也就是声明虚函数时初始化为0的函数。即第2处的“virtualvoidfun()=0;”。第2处的P为指针变量,将对象obj1赋值给P,实际上蹙P指向对象obj1的地址,所以将“p=*obj1;”修改为“P=&obj1;”。第3处的“P=*obj2;”修改为“p=&obj2;”。
 
  简单应用题
 
  使用VC++6.0打开考生交件夹下的源程序文件2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intN[4])的功能是用4个数字,组成互不相同且无重复数字的3位数,并将满足所有条件的数字输出到屏幕,
 
  并且每输出一个3位数就换一行。
 
  程序分析:可填在百位、十位、个位的数字都是1、2、3、0。组成所有的排列后再去掉不满足条件的排列。如果判定第一个数字是0,则也去掉。
 
  试题程序:
 
  #include
 
  voidfun(intN[4])
 
  {
 
  }
 
  intmain()
 
  intN[4]={1,2,3,0};
 
  fun(N):
 
  return0;
 
  }
 
  参考答案:
 
  inti,j,k;
 
  for(i=0;i<4;i++)//百位循环
 
  {
 
  for(j=0;j<4;j++)//十位循环
 
  for(k=0;k<4;k++)//个位循环
 
  {
 
  if(i!=j&&j!=k&&k!=i&&N[i]!=0)//
 
  当三位数不同,并且百位不为0
 
  {
 
  cout<  }
 
  }
 
  }
 
  【解析】本题利用3层循环,对3位数字是否相同进行判断。如果3位数不同,并且百位不为0,那么依次输出这3 位数,即由3位数组成的数字。
 
  综合应用题
 
  使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。
 
  (1)基类People完成打印功能,定义其中的打印函数为
 
  虚函数,请在注释1后添加适当的语句。
 
  (2)类Boy继承于People,在构造函数中设置性别为1,
 
  请在注释2后添加适当的语句。
 
  (3)类Girl继承于People,在构造函数中设置性别为0,请在注释3后添加适当的语句。
 
  (4)实现函数fun,用于传递不同的类型,打印出性别,请在注释4后添加适当的语句。
 
  输出的内容如下:
 
  Sex=Boy
 
  Sex=Girl
 
  注意:除在指定位暨添加语句之外,请不要改动程序中的其他内容。
 
  试题程序:
 
  #include
 
  classPeople
 
  {
 
  public:
 
  //********1********
 
  voidprint(){}
 
  intsex;
 
  };
 
  classBoy:publicPeople
 
  {
 
  publiC:
 
  Boy()
 
  {
 
  //********2********}
 
  voidprint()
 
  {
 
  cout<<"Boy"<  }
 
  };
 
  classGirl:publicPeople
 
  {
 
  public:
 
  Girl()
 
  {
 
  //********3********}
 
  voidprint()
 
  {
 
  cout<<"Girl"<  }
 
  };
 
  //********4********{
 
  cout<<"Sex=";
 
  p.print();
 
  }
 
  intmain()
 
  {
 
  Boym:
 
  fun(m);
 
  Girln:
 
  fun(n);
 
  return0;
 
  }
 
  参考答案:
 
  (1)将“voidprint(){};”补充完整为“virtualvoidprint(){};”。
 
  (2)应添加“sex=1;”。
 
  (3)应添加“sex=0;”。
 
  (4)应添加“voidfun(People&p)”。
 
  【解析】第1处要求“基类People完成打印功能,定义其中的打印函数为虚函数”。虚函数是函数的一种,定义虚函数,在函数名前声明virtual就可以了,所以将第1处的“voidprint(){}”语句修改为“virtualvoidprint(){}”。第2处要求“类Boy继承于People,在构造函数中设置性别为l”。基类People中变量sex用来存放性别,Boy继承People,所以Boy中性别的变量可以使用基类中的sex变量,设置性别为1,即“sex=1;”。第3处要求“类Girl继承于People,在构造函数中设置性别为0”。在第3处添加语句“sex=0;”。第4处要求“实现函数fun,用于传递不同的类型,打印出性别”。根据“P.print();”语句知道,fun函数的形参为指针P,由于它调用了基类People中的成员函数print,所以P的基类为People,即添加函数fun的定义为“voidfun(People&p)”。

责编:曾珂

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部