首页 - 网校 - 万题库 - 美好明天 - 直播 - 导航
您现在的位置: 考试吧 > 计算机等级考试 > 计算机二级考试 > C加加 > 模拟试题 > 正文

2018年3月计算机二级C++过关练习题及答案(6)

来源:考试吧 2018-02-06 14:57:10 要考试,上考试吧! 万题库
“2018年3月计算机二级C++过关练习题及答案(6)”供考生参考。更多计算机等级考试相关信息请关注考试吧计算机等级考试网。

  点击查看:2018年3月计算机二级C++过关练习题及答案汇总

  点击查看:2015年计算机二级考试C++过关练习题及答案汇总

  1[判断题]常数据成员在常成员函数中的值是不允许改变的,而在非常成员函数中是允许改变的。

  参考答案:错

  2[单选题]有如下程序:

  该程序段的输出结果是 (  )。

  A.987B.876C.8765D.9876

  参考答案:B

  参考解析:注意到n--的运算顺序,知道第一次输出的应是8,据此就可以很快排除A和D。然后判断循环几次结束,由于当n-6时,while的条件判断已经不成立了,直接跳过循环体结束程序了。故当n=9,8,7时执行了循环体,故答案为B。

  3[单选题]

  参考答案:A

  4[单选题] 在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( )。

  A.派生类的对象可以赋给基类的对象

  B.派生类的对象可以初始化基类的引用

  C.派生类的对象可以直接访问基类中的成员

  D.派生类的对象的地址可以赋给指向基类的指针

  参考答案:C

  参考解析:公有继承的派生类和基类是子类型的关系,所谓子类型是类型间一般和特殊的关系,即派生类是基类的子类型或者说基类的操作可以被用于操作派生类的对象。

  5[单选题]

  A. 

  B. 

  C.  

  D.  

  参考答案:B

  6[单选题]下列关于线性链表的描述中,正确的是(  )。

  Ⅰ、只含有一个指针域来存放下一个元素地址

  Ⅱ、指针域中的指针用于指向该结点的前一个或后一个结点(即前件或后件l

  Ⅲ、结点由两部分组成:数据域和指针域。

  A.仅Ⅰ、ⅡB.仅Ⅰ、ⅢC.仅Ⅱ、ⅢD.全部

  参考答案:D

  参考解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。

  在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。

  7[单选题] 下列关于类和对象的叙述中,错误的是(  )。

  A.一个类只能有一个对象

  B.对象是类的具体实例

  C.类是对某一类对象的抽象

  D.类和对象的关系是一种数据类型与变量的关系

  参考答案:A

  参考解析:本题考查类和对象的概念。类是用户定义的一种类型,程序员可以使用这个类型来说明多个变量,即对象。

  8[单选题] 下列有关类继承的叙述中,错误的是(  )。

  A.继承可以实现软件复用

  B.虚基类可以解决由多继承产生的二义性问题

  C.派生类构造函数要负责调用基类的构造函数

  D.派生类没有继承基类的私有成员

  参考答案:D

  参考解析:本题考查类继承。派生类继承了基类的全部数据成员和私有成员,只是基类的私有成员在派生类中是隐藏的,只能在基类内部访问。

  9[简答题](1)应改为“catch(char*s)”。

  (2)应改为“cateh(inti)”。

  (3)应改为“catch(…)”。

  【解析】本题中第1个标识前的异常抛出语句为“throw("error");”,其中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catch(chars)”是字符型的,所以第1处的语句修改为“catch(char*S)”。第2个标识前的异常抛出语句为“throw((int)0);”,其中的类型为int。对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行。即第2处的语句修改为“catch(inti)”。如果在catch子句中没有指定异常信息的类型,那么就用删节号“…”表示它可以捕捉任何类型的异常信息,即修改为“catch(…)”。

  参考解析:使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。

  程序异常,输出信息为

  error

  O

  ERROR

  注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。

  试题程序:

  #include

  intmain()

  {

  try

  {

  throw("error");

  }

  //********error********

  catch(chars)

  {

  cout<

  }

  try

  {

  throw((int)0);

  }

  //********error********

  catch()

  {

  cout<

  }

  try

  {

  throw(O);

  throw("error");

  }

  //********error********

  catch()

  {

  cout<<"ERROR"<

  }

  return0;

  }

  10[简答题]使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成以下两个函数。

  (1)funl(intn)求出n的阶乘,必须使用递归调用。

  (2)fun2(intn)求出n的阶乘,不能使用递归调用。如果n小于1则返回0。

  注意:不能修改函数的其他部分。

  试题程序:

  #include

  //必须使用递归

  intfunl(intn)

  {

  }

  //不能使用递归

  intfun2(intn)

  {

  }

  voidmain()

  {

  inti;

  cout<<"请输入一个整数:"<

  cin>>i;

  cout<<"输入数字的阶乘是:"<

  cout<<"输入数字的阶乘是:"<

  return;

  }%

  参考解析:

  //必须使用递归

  jntfunl(intn)

  {

  if(n<=0)

  return0;

  if(n==1)

  return1;

  returnn*funl(n-1);

  };

  //不能使用递归

  intfun2(intn)

  {

  if(n<=0)

  retturn0;

  intres=1:

  for(inti=1;i<=n;i++)

  {

  res*=i;

  }

  returnres;

  }

  【解析】本题考查的是递归函数和阶乘算法。递归的阶乘算法可以通过判断传入参数,如果大于1,则返回n*funl(n-1),意思是返回n乘以n-1的阶乘;如果等于1,则返回1。这样递归下去就能最终得出n的阶乘。非递归算法可以先建立一个累乘变量,并初始化为1,然后循环遍历1~n,将遍历的数累乘到变量中即可。

扫描/长按二维码帮助考试通关
2018年等考报考资讯
2018等考各科通关技巧
2018各科最新预测试卷
2018等考各科备考资料

微信搜索"考试吧"了解更多考试资讯、下载备考资料

  相关推荐:

  2018年全国计算机等级考试必做试题汇总(各科目)

  2018年全国计算机等级考试复习知识点汇总(各科目)

  2018计算机等级考试报名时间|各地报名入口|报名条件

  2018年全国计算机等级考试时间|教材目录(2018年版)

  2018全国计算机等级考试备考经验及应试技巧汇总

  报名方法|考试内容|考试大纲|2018计算机等级考试科目

  历年真题汇总|考试吧策划:2018年计算机等级考试报考指南

0
收藏该文章
0
收藏该文章
文章搜索
万题库小程序
万题库小程序
·章节视频 ·章节练习
·免费真题 ·模考试题
微信扫码,立即获取!
扫码免费使用
版权声明:如果计算机等级考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本计算机等级考试网内容,请注明出处。
Copyright © 2004- 考试吧计算机等级考试网 出版物经营许可证新出发京批字第直170033号 
京ICP证060677 京ICP备05005269号 中国科学院研究生院权威支持(北京)
在线模拟试题
考证通关杀器
考试最新资讯
一次通关技巧