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

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

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

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

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

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

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打开考生文件夹下的工程kt11_1,此工程包含一个源程序文件kt11_1.cpp,但该程序运行有问题,请改正函数中的错误,使该程序的输出结果为:

  Valuesare:1,2and3
  Pressanykeytocontinue

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

  #include
  classCommonBase
  { public:
  intx; };
  /*****************found*****************/
  classDeriveCommonA::publicCommonBase
  { public:
  inty; };
  classDeriveCommonB:publicCommonBase
  { public:
  intz; };
  /*****************found*****************/
  classOverlapping:publicDeriveCommonA;publicDeriveCommonB
  { public:
  voidDisplay()
  { cout<<"Valuesare:"<
  intmain()
  { Overlappingov;
  /*****************found*****************/
  ov.x=1;
  ov.y=2;
  ov.z=3;
  ov.Display();
  return0; }

  【试题解析】

  (1)主要考查对派生类定义的理解,C++规定的继承格式是在类名的后面加冒号,之后是继承方式和继承类的名称,题目中错误的使用了作用域运算符;

  (2)主要考查多继承的定义,多继承的格式基本上和单继承相同,不过在多个基类之间应该使用逗号分开,题目中错误的使用了分号,分号在C++中是结束标志;

  (3)主要考查对派生类的对象访问的掌握,x是类CommonBase的成员,如果不加限制的访问就会产生二义性,编译程序不知道这个x是A类的,还是B类的,所以必须使用作用域限制符“::”,为了解决这个问题可以使用虚基类。

二、简单应用题

  请编写函数fun(),该函数的功能是判断字符串是否为回文,若是则函数返回1,主函数中输出YES;否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。

  例如:字符串LEVEL是回文,而字符串123312就不是回文。

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

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

  文件kt11_2.cpp的内容如下:

  #include
  #include
  #defineN80
  intfun(char*str)
  {
  }
  voidmain()
  { chars[N];
  cout<<"Enterastring:"<
  gets(s);
  cout<<"nn";
  puts(s);
  if(fun(s))
  cout<<"YESn";
  else
  cout<<"NOn"; }

  【参考答案】

  int fun(char *str)
  {
  int i,n=0,fg=1;
  char *p=str;
  while(*p)
  { n++; p++; }
  for(i=0;i
  if(str[i]==str[n-1-i]) ;
  else
  { fg=0; break; }
  return fg;
  }

  【试题解析】

  本题的解题思路是:先利用循环中指针的移动来求得字符串的长度n,然后用一个for循环依次取得数组中的前半部分元素,用取得的前半部分内的元素逐个与后半部分内的对应位置的元素进行比较,如果相同,不做任何工作,接着取下一个元素,继续比较;如果不相同,可以判断该字符串肯定不是回文,就给标志变量fg赋值0(fg的初始值为1)。最终把fg作为函数的返回值返回(fg值为1表明是回文,fg值为0表明不是回文)。

三、综合应用题

  使用VC6打开考生文件夹下的工程kt11_3。此工程包含一个kt11_3.cpp,其中定义了类queue,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。

  (1)完成类queue的无参数的构造函数的定义,要求把数据成员bl和el都初始化为0,同时输出queueinitialized。请在注释“//**1**”之后添加适当的语句。

  (2)完成类queue的成员函数qput(intj)的定义,它的功能是把新的元素加入队列,过程是先依据bl的值判断数组是否已经满了,如果是就输出queueisfull,否则bl自加一,并且把参数j的值存入bl指向的数组元素中,请在注释“//**2**”之后添加适当的语句。

  (3)完成类queue的成员函数qget()的定义,它的功能是把队列开头的元素提取出队列,并返回该值,过程是先比较el和bl的值判断队列是否已空,如果是就输出queueisempty,否则el自加一,并且把el指向的数组元素返回,请在注释“//**3**”之后添加适当的语句。

  程序输出结果如下:

  queueinitialized
  queueinitialized
  3311
  4422

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

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

  #include
  classqueue
  { intq[100];
  intbl,el;  
  public:
  queue();
  voidqput(intj);
  intqget(); };
  queue::queue()
  { //**1** }
  voidqueue::qput(intj)
  { //**2**
  { cout<<"queueisfulln";
  return; }
  bl++;
  q[bl]=j; }
  intqueue::qget()
  { //**3**
  { cout<<"queueisemptyn";
  return0; }
  el++;
  returnq[el]; }
  voidmain()
  {
  queueaa,bb;
  aa.qput(11);
  bb.qput(22);
  aa.qput(33);
  bb.qput(44);
  cout<
  cout<
  }

  【参考答案】

  (1)bl=el=0;
  cout<<"queue initializedn";

  (2)if(bl==100)

  (3)if(el==bl)

  【试题解析】

  主要考查对于具体的一个队列类的掌握,对列是一种特殊的存储结构,应使用先进先出原则。题目中bl和el分别指向队列的开头和结尾,其中(2)是队列的标准插入操作,(3)是队列的标准的删除操作,注意它们的操作方式和先判断后操作的原则。



     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 举报电话: