无忧首页企业系统我的无忧
无忧服务:
兼职活动培训
娱乐交友:
交友社区资讯
全职实习:
实习暑假寒假
微信号:school51
扫一下,立即关注
加关注
在线支付,立省10元
下载新版APP
===大学生成长生活平台===

2013年9月计算机二级C++无纸化预测试题及答案一

2013-12-20来源/作者:管理员点击次数:357

  一、选择题
  1.栈和队列的共同特点是(  )
  A.都是先进先出
  B.都是先进后出
  C.只允许在端点处插入和删除元素
  D.没有共同点
  【参考答案】C
  2.链表不具有的特点是(  )
  A.不必事先估计存储空间
  B.可随机访问任一元素
  C.插入删除不需要移动元素
  D.所需空间与线性表长度成正比
  【参考答案】B
  3.为了提高测试的效率,应该(  )
  A.随机选取测试数据
  B.取一切可能的输入数据作为测试数据
  C.在完成编码以后制定软件的测试计划
  D.集中对付那些错误群集的程序
  【参考答案】D
  4.软件生命周期中所花费用最多的阶段是(  )
  A.详细设计
  B.软件编码
  C.软件测试
  D.软件维护
  【参考答案】D
  5.下列有关数据库的描述,正确的是(  )
  A.数据库是一个DBF文件
  B.数据库是一个关系
  C.数据库是一个结构化的数据集合
  D.数据库是一组文件
  【参考答案】C
  6.算法的空间复杂度是指(  )
  A.算法程序的长度 来源:考试大
  B.算法程序中的指令条数
  C.算法程序所占的存储空间
  D.执行过程中所需要的存储空间
  【参考答案】D
  7.数据结构中,与所使用的计算机无关的是数据的(  )
  A.存储结构
  B.物理结构
  C.逻辑结构
  D.物理和存储结构
  【参考答案】C
  8.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指(  )
  A.模块间的关系
  B.系统结构部件转换成软件的过程描述
  C.软件层次结构
  D.软件开发过程
  【参考答案】B
  9.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(  )
  A.控制流
  B.加工
  C.数据存储
  D.源和潭
  【参考答案】A
  10.在数据库设计中,将E-R图转换成关系数据模型的过程属于(  )
  A.需求分析阶段
  B.逻辑设计阶段
  C.概念设计阶段
  D.物理设计阶段
  【参考答案】B
  11.以下C++语言中用于单行注释的是(  )
  A.//
  B./*
  C.*/
  D.|
  【参考答案】A
  12.若变量已正确定义并赋值,以下符合C++语言语法的表达式是(  )
  A.a:=b+1
  B.a=b=c+2
  C.int18.5%3
  D.a=a+7=c+b
  【参考答案】B


  13.有以下程序
  #include″iostream.h″
  voidmain(  )
  {inti=1,j=1,k=2;
  if((j++||k++)&&i++)
  cout<
  cout<
  执行后输出结果是(  )
  A.1,1,2
  B.2,2,1
  C.2,2,2 www.Examda.CoM
  D.2,2,3
  【参考答案】C
  14.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是(  )
  A.a,point,*&a
  B.&*a,&a,*point
  C.*&point,*point,&a
  D.&a,&*point,point
  【参考答案】D
  15.若运行时给变量x输入12,则以下程序的运行结果是(  )
  #include
  voidmain(  )
  {
  intx,y;
  cin>>x;
  y=x>12?x+10:x-12;
  cout<
  cout<
  }
  A.0
  B.22
  C.12
  D.10
  【参考答案】A
  16.以下关于C++类的说法中正确的是(  )
  A.C++语言的默认访问权限是private
  B.C++语言中的类定义,用户一定要自己定义一个构造函数用于实例化类
  C.C++语言中的成员函数的实现部分一定要写在类定义外
  D.C++语言中的类不能够嵌套定义
  【参考答案】A
  17.派生类对象对其基类中的什么成员是可访问的?(  )
  A.公有继承的私有成员
  B.私有继承的公有成员
  C.私有继承的保护成员
  D.保护继承的保护成员
  【参考答案】D
  18.下列关于运算符重载不正确的是(  )
  A.运算符重载不能改变运算符的操作数个数
  B.运算符重载不能改变运算符的优先级
  C.运算符重载不能改变运算符的结合性
  D.运算符重载能改变对预定义类型数据的操作方式
  【参考答案】D
  19.对于重载的运算符>>,它是一个(  )
  A.用于输入的友元函数
  B.用于输入的成员函数
  C.用于输出的友元函数
  D.用于输出的成员函数
  【参考答案】A
  20.若调用一个函数,且此函数中没有return语句,则正确的说法是该函数(  )
  A.没有返回值
  B.返回若干个系统默认值
  C.有返回值,但返回一个不确定的值
  D.能返回一个用户所希望的函数值
  【参考答案】C
  21.以下能对二维数组a进行正确初始化的语句是(  )
  A.inta[2][]={{1,0,1},{5,2,3}};
  B.inta[][3]={{1,2,3},{4,5,6}};
  C.inta[2][4]={{1,2,3},{4,5},{6}};
  D.inta[][3]={{1,0,1},{},{1,1}};
  【参考答案】B
  22.有如下程序
  #include
  voidmain(  )
  {floatx=2.0,y;
  if(x<0.0)y=0.0;
  elseif(x<10.0)y=1.0/x;
  elsey=1.0;
  cout<
  该程序的输出结果是(  )
  A.0
  B.0.25
  C.0.5
  D.1.0
  【参考答案】C
  23.C++中,表示一条语句结束的标号是(  )
  A.#
  B.; 
  C.//
  D.}
  【参考答案】B
  24.已知有定义
  constintD=5;
  inti=1;
  doublef=0.32;
  charc=15;
  则下列选项错误的是(  )
  A.++i;
  B.D--;
  C.c++;
  D.--f;
  【参考答案】B


  25.下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,在划线处应填入的选项是(  )
  #include
  voidmain(  )
  {inti=0,j,k;
  do{i++;k=316-13*i;}while(___);
  j=k/11;
  cout<<″316=13*″<
  A.k/11B.kC.k/11==0D.k=0
  【参考答案】B
  26.若已定义:
  inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;
  其中o≤i≤9,则对a数组不正确的引用是(  )
  A.a[p-a]
  B.*(&a[i])
  C.p[i]
  D.a[10]
  【参考答案】D
  27.函数fun的返回值是(  )
  fun(char*a,char*b)
  {intnum=0,n=0;
  while(*(a+num)!=′′)num++;
  while(b[n]){*(a+num)=b[n];num++;n++;}
  returnnum;}
  A.字符串a的长度
  B.字符串b的长度
  C.字符串a和b的长度之差
  D.字符串a和b的长度之和
  【参考答案】D
  28.下面程序的结果为(  )
  #include
  intc;
  classA{
  private:
  inta;
  staticintb;
  public:
  A(  ){a=0;c=0;}
  voidseta(  ){a++;}
  voidsetb(  ){b++;}
  voidsetc(  ){c++;}
  voiddisplay(  ){cout<
  intA::b=0;
  voidmain(  )
  {Aa1,a2;
  a1.seta(  );
  a1.setb(  ); 考试大论坛
  a1.setc(  );
  a2.seta(  );
  a2.setb(  );
  a2.setc(  );
  a2.display(  );}
  A.121
  B.122
  C.112
  D.222
  【参考答案】B
  29.下列关于构造函数说法不正确的是(  )
  A.构造函数必须与类同名
  B.构造函数可以省略不写
  C.构造函数必须有返回值
  D.在构造函数中可以对类中的成员进行初始化
  【参考答案】C
  30.在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是(  )
  A.一元成员运算符
  B.二元成员运算符
  C.一元友元运算符
  D.选项B和选项C都可能
  【参考答案】D
  31.表示在输出时显示小数位,和在文件输入时判断文件尾的函数分别是(  )
  A.showbase(  )和eof(  )
  B.showpoint(  )和eof(  )
  C.showpoint(  )和bad(  )
  D.showpoint(  )和good(  )
  【参考答案】B
  32.下列程序中画线处应填入的语句是(  )
  classBase
  {public:
  voidfun(  ){cout<<″Baseoffun″<
  classDerived:publicBase
  {
  voidfun(  )
  {
  ____//显示基类的成员函数fun
  cout<<″Derivedoffun″<
  }
  };
  A.fun(  );
  B.Base.fun(  );
  C.Base::fun(  );
  D.Base->fun(  );
  【参考答案】C
  33.在位运算中,操作数每右移一位,其结果相当于(  )
  A.操作数乘以2
  B.操作数除以2
  C.操作数乘以4
  D.操作数除以4
  【参考答案】B
  34.一个类的友元函数能够访问该类的(  )
  A.私有成员
  B.保护成员
  C.公有成员
  D.所有成员
  【参考答案】D
  35.下面程序的输出结果是(  )
  #include
  #include
  voidmain(  )
  {
  charp1[10],p2[10];
  strcpy(p1,″abc″);
  strcpy(p2,″ABC″);
  charstr[50]″xyz″;
  strcpy(str+2,strcat(p1,p2));
  cout<
  }
  A.xyzabcABC
  B.zabcABC
  C.xyabcABC
  D.yzabcABC
  【参考答案】C


  二、填空题
  1.算法的基本特征是可行性、确定性、【1】和拥有足够的情报。
  【参考答案】
  【1】有穷性
  2.在面向对象的程序设计中,类描述的是具有相似性质的一组【2】。
  【参考答案】
  【2】对象
  3.数据库管理系统常见的数据模型有层次模型、网状模型和【3】3种。
  【参考答案】
  【3】关系模型
  4.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【4】。
  【参考答案】
  【4】可重用性
  5.关系操作的特点是【5】操作。
  【参考答案】
  【5】集合
  6.C++语言中关键字运算符有new,delete和【6】。
  【参考答案】
  【6】sizeof
  7.以下程序的输出结果是【7】。
  #include
  classobject
  {private:
  intval;
  public:
  object(  );
  object(inti);
  ~object(  );};
  object::object(  )
  {val=0;
  cout<<″Defaultconstructorforobject″<
  object::object(inti)
  {vali;
  cout<<″Constructorforobject″<
  object::~object(  )
  {cout<<″Destructorforobject″<
  classcontainer{private:
  objectone;
  objecttwo;
  intdata;
  public:
  container(  );
  container(inti,intj,intk);
  ~container(  );};
  container::container(  )
  {cata=0;
  cout<<″Defaultconstructorforcontainer″<
  container::container(inti,intj,intk):two(i),one(j)
  {data=k;
  cout<<″Constructorforcontainer″<
  container::~container(  )
  {cout<<″Destructorforcontainer″<
  voidmain(  )
  {containeranObj(5,6,10);}
  【参考答案】
  【7】Constructorforobject6
  Constructorforobject5
  Constructorforcontainer
  Destruct
  8.静态成员函数可以直接访问类的【8】成员,不能直接访问类的【9】成员。
  【参考答案】
  【8】静态【9】非静态
  9.表达式x.operator+(y.operator++(0))还可以写成【10】。
  【参考答案】
  【10】x+y++或x+(y++)
  10.在C++语言的结构化程序设计中,【11】是程序的基本组成单元;在C++语言的面向对象设计框架中,【12】是程序的基本组成单元。
  【参考答案】
  【11】函数【12】类
  11.C++语言提供的基本控制结构可以分为3种类型:顺序结构、【13】和循环结构。
  【参考答案】
  【13】选择结构
  12.C++语言的参数传递机制包括传值和传地址两种,如果调用函数时,需要改变实参或者返回多个值,应该采取【14】方式。
  【参考答案】
  【14】传地址
  13.继承的方式有公有继承、私有继承和【15】3种。
  【参考答案】
  【15】保护继承
  三、改错题
  使用VC6打开考生文件夹下的工程kt7_1,此工程包含一个源程序文件kt7_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
  Constructor1
  Constructor1
  Constructor1
  Destructor
  Constructor2
  Destructor
  x=0
  x=5
  Destructor
  Destructor
  源程序文件kt21_1.cpp清单如下:
  #include
  classB
  {intx;
  public:
  B(  ){x=0;cout<<"Constructor1"<
  B(inti){x=i;cout<<"Constructor2"<
  ~B(  ){cout<<"Destructor"<
  /**********found**********/
  ~B(inti){cout<
  voidprint(  ){cout<<"x="<
  voidmain(  )
  {B*ptr;
  ptr=newB[2];
  /**********found**********/
  ptr[0]=B(0);
  ptr[1]=B(5);
  /**********found**********/
  for(inti=0;i<2;)
  ptr[i].print(  );
  delete[]ptr;}
  【参考答案】
  (1)将~B(inti){cout<
  (2)将ptr[0]=B(0);改为:ptr[0]=B(  );
  (3)将for(inti=0;i<2;)改为:for(inti=0;i<2;i++)
  【试题解析】
  (1)主要考查对析构函数特性的掌握,析构函数不能带参数也不能重载,一个类中只能定义一个析构函数,因为析构函数在删除对象的时候被默认调用,如果含有多个析构函数则可能引起多次删除产生的意外错误;
  (2)主要考查对构造函数与函数重载的掌握,由输出结果可知其应该调用不带参数的构造函数B(  );
  (3)主要考查对for循环语句的使用,如果在for循环中不写第三个表达式就意味着该循环一直会执行下去,因为i的值总是小于2。
  四、简单应用题
  编写一个函数intcharnum(charfn[10]),该函数以只读方式打开文件fn,,通过统计,返回文件中字符的个数,请使用while循环实现计数功能。
  注意:部分源程序已存在文件kt7_2.cpp中。
  请勿修改主函数main和其他函数中的任何内容,仅在函数charnum的花括号中填写若干语句。
  文件kt7_2.cpp的内容如下:
  #include
  #include
  #include
  intcharnum(charfn[10]);
  voidmain(  )
  {intnum;
  num=charnum("abc.txt");
  cout<<"num="<
  intcharnum(charfn[10])
  {
  }
  【参考答案】
  intcharnum(charfn[10])
  {fstreamfile;
  file.open(fn,ios::in);
  if(!file)
  {cout<<"abc.txtcan’topen"<
  abort(  );}
  charch;
  inti=0;
  while(!file.eof(  ))
  {file.get(ch);
  i++;}
  file.close(  );
  returni-1;}
  【试题解析】
  本题主要考查对文件相关操作的熟练程度。首先定义文件流类的变量,然后使用该对象的open方法打开一个文件,接着使用while循环和getch方法每次读入一个字符并统计字符个数,最后使用close方法关闭文件,返回i值。
  五、综合应用题
  使用VC6打开考生文件夹下的工程kt7_3,此工程包含一个源程序文件kt7_3.cpp,其中含有一个类Circle的定义,但该类的定义并不完整。请按要求完成下列操作,将类Circle的定义补充完整。
  (1)为类Circle增加一个构造函数,该函数有一个参数,并在构造时将该参数值赋给成员radius。将该函数实现为一个非内联函数,并且使用参数列表的方式将类成员赋值。请在注释“//**1**”之后添加适当的语句。
  (2)为类Circle增加一个成员函数print(  ),使得可以输出有关圆的信息,比如下列程序
  Circlec;
  c.SetRadius(5);
  c.Print(  );
  将输出:Thecirclehasradiusof5!
  请在注释“//**2**”之后添加适当的语句。
  (3)完成友元函数voidCompareR(Circle*c1,Circle*c2)的定义,在屏幕中输出c1与c2比较radius大小结果,要求使用if-else结构完成。请在注释“//**3**”之后添加适当的语句。
  输出结果如下:
  Thecirclehasradusof5!
  Thecirclehasradiusof10!
  c1
  注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
  源程序文件kt7_3.cpp清单如下:
  #include
  classCircle{
  public:
  Circle(  ):radius(5){}
  //**1**
  voidSetRadius(intr){radius=r;}
  intGetRadius(  ){returnradius;}
  //**2**
  friendvoidCompareR(Circle*c1,Circle*c2);
  private:
  intradius;};
  voidCompareR(Circle*c1,Circle*c2)
  {//**3**
  cout<<"c1>c2"<
  else
  if((c1->GetRadius(  ))==(c2->GetRadius(  )))
  cout<<"c1=c2"<
  else
  if((c1->GetRadius(  ))<(c2->GetRadius(  )))
  cout<<"c1
  voidmain(  )
  {Circlec1; 来源:考试大
  c1.SetRadius(5);
  c1.Print(  );
  Circlec2(10);
  c2.Print(  );
  CompareR(&c1,&c2);}
  【参考答案】
  (1)Circle(intrad):radius(rad){}
  (2)voidPrint(  ){cout<<"Thecirclehasradiusof"<
  (3)if((c1->GetRadius(  ))>(c2->GetRadius(  )))
  【试题解析】
  本题考查成员函数的定义与实现,友元函数,if分支语句等知识点。友元函数的类体外的定义与一般函数一样,其中if-else的使用,else总是与其最近的那个if配对使用的,书写时最好使用缩进格式,将配对的if-else对齐,以免出错。



相关阅读



关于我们 | 联系我们 | 用户指南 | 网站地图 | 意见建议 | 会员注册 | 用户协议 | 隐私政策