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

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

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

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

  1[单选题]下列关于面向对象概念的描述中,错误的是(  )。

  A.面向对象方法比面向过程方法更加先进

  B.面向对象方法中使用了一些面向过程方法中没有的概念

  C.面向对象方法替代了结构化程序设计方法

  D.面向对象程序设计方法要使用面向对象的程序设计语言

  参考答案:C

  2[简答题]编写一程序,将两个文件合并成一个文件。

  参考解析:

  #include

  #include

  using namespace std;

  int main(){

  int i=1;

  char c[1000];

  ifstream ifile1("D:\\10_4_3.cpp");

  ifstream ifile2("D:\\10_4_4.cpp");

  ofstream ofile("D:\\r10_4.cpp");

  while(!ifile1.eof()){

  ifile1.getline(c,999);

  ofile<

  }

  while(!ifile2.eof()){

  ifile2.getline(c,999);

  ofile<

  }

  ifile1.close();

  ifile2.close();

  ofile.close();

  return 0;

  }

  3[单选题]已知一棵二叉树的先根序列为ABCDEFK,中根序列为DGBAFCK,则结点的后根序列为(  )。

  A.ACFKDBGB.GDBFKCAC.KCFAGDBD.ABCDFKG

  参考答案:B

  参考解析:通过两种树的遍历序列来推断第三种树的遍历时,反复利用前序和中序遍历的性质,就可以确定二叉树,具体:前序遍历的第一个结点A为树的根结点。中序遍历中A左边的结点在A的左子树中,A的右边的结点在A的右子树中。再分别对A的左右子树进行前丽步骤重复处理,直到每个结点都找到正确的位置。

  具体:前序遍历的第一个结点A为树的根结点。中序遍历中A左边的结点在A的左子树中,A的右边的结点在A的右子树中。再分别对A的左右子树进行前面步骤重复处理,直到每个结点都找到正确的位置。

  4[单选题]下列的方法中,不属于软件调试技术的是(  )。

  A.强行排错法B.集成测试法C.回溯法D.原因排除法

  参考答案:B

  参考解析:调试的关键在于推断程序内部的错误位置及原因。主要的调试方法有强行排错法、回溯法和原因排除法。

  5[单选题]已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量"\101"是(  )。

  A.字符AB.字符aC.字符eD.非法的常量

  参考答案:A

  参考解析:首先将八进制数转换成十进制数,则发现是65,故答案为A。

  6[单选题]下面关于函数模板的表述中不正确的是(  )。

  A.类模板的成员函数都是模板函数

  B.类模板本身在编译过程中不会产生任何代码

  C.类模板只能有虚拟类型的参数

  D.用类模板定义一个对象时,实参不能省略

  参考答案:C

  参考解析:

  

  

  7[填空题]对于长度为n的有序线性表,在最坏情况下,二分法查找只需比较__________次。

  参考解析:

  

  

  8[单选题] 有下列程序:

  #include

  voidmain(  )

  {inti=5;

  do

  {if(i%3=1)

  if(i%5==2)

  {printf("*%d",i);break;}

  i++:

  }while(i!=O);

  printf("\n");

  }

  程序的运行结果是(  )。

  A.*7B.*3*5C.*5D.*2*6

  参考答案:A

  参考解析:本题考查d0…while循环,先执行循环体,再判断条件是否成立,函数实现的功能是找出满足一个数,它除3时余1,除5时余2,然后打印“*”和这个数从5开始,等于7时恰好符合条件,输出,最后循环结束。

  9[简答题]使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为:

  sizeof(S1)=5

  sizeof(s2)=10

  sizeof(s3)=1

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

  (1)不能删除assert()语句。

  (2)只能修改后面的数字。

  提示:assert函数如果为假,则会产生一个中断异常。

  试题程序:

  #include

  #include

  voidmain()

  {

  char*s1="abc":

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

  assert(sizeof(s1)==3):

  cout<<"sizeof(s1)=5"<

  chars2[10]="ab":

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

  assert(sizeof(s2)==2);

  cout<<"sizeof(s2)=10"<

  chars3=23:

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

  assert(sizeof(s3)==4);

  cout<<"sizeof(s3)=1"<

  return;

  }

  参考解析:

  (1)应改为“assert(sizeof(s1)==4);”。

  (2)应改为“assert(sizeof(s2)==1O);”。

  (3)应改为“assert(sizeof(s3)==1);”。

  【解析】assert函数如果为假,则会产生一个中断异常。所以要让它正常执行输出结果,那么assert函数只有为真,才不会产生中断异常。“assert(sizeof(s1)==3);”语句中“sizeof(s1)==3”为假,这会使程序产生异常,不能正常执行。因为str1的值为abc,但是它还有一个尾符,它的长度应该是4,而不是3,所以在第1处修改为“assert(sizeof(s1)==4);”。str2[10]说明,str2的空间为10,在第2处修改为“assert(sizeof(s2)==10);”。charstr3=23;语句说明23是字符,所占存储空间为1,所以修改为“assert(sizeof(s3)==1);”。

  10[简答题]请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明的CDeepCopy是一个用于表示矩阵的类。请编写这个类的赋值运算符成员函数0perator=,以实现深层复制。

  要求:

  补充编制的内容写在“//************333************”与“//****************666*************”之间。不得修改程序的其他部分。

  注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。

  //CDeepCopy.h

  #include

  #include

  using namespace std;

  class CDeepCopy

  {

  public:

  int n;//动态数组的元素个数

  int *p;//动态数组首地址

  CDeepCopy(int);

  ~CDeepCopy();

  CDeepCopy&operator=(const CDeepCopy&r);//赋值运算符函数

  };

  void writeToFile(char});

  //main.cpp

  #include”CDeepCopy.h”

  CDeepCopy::一CDeepCopy(){delete[]P;}

  CDeepCopy::CDeepCopy(int k){n=k;p=new int[n];}//构造函数实现

  CDeepCopy&CDeepCopy::0perator=(const CDeepCopy&r)//赋值运算符函数实现

  {

  //***********333*********

  //***********666***********

  }

  int main()

  {

  CDeepCopy a(2),d(3);

  a.p[O]=1;d.p[O]=666;//对象a,d数组元素的赋值

  {

  CDeepCopy b(3);//调用赋值运算符函数

  a.p[O]=88;b=a;

  cout<

  }

  cout<

  cout<<”d fade away;\n”;

  cout<

  writeToFile(””);

  return 0;

  }

  参考解析:

  lq=r.n;//把对象r字符长度赋值给n

  delete[]P;//删除动态数组P

  P=new int[n];//给动态数组P分配空间为n

  for(int i=0;i

  //遍历对象r中的数组P

  P[i]=r.P[i];//把r.P[i]赋值给P[i]

  retum*this://返回被赋值的对象

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

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

  相关推荐:

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

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

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

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

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

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

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

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