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

2010年全国计算机等级考试二级C++模拟试题及答案(9)

2012-12-26来源/作者:卫凯点击次数:443

  编辑推荐:

  2010年全国计算机二级考试各科模拟试题冲刺专题

  全国计算机二级考试C++试题练习汇总

  全国计算机等级考试二级C++语言程序设计标准预测试卷汇总

  笔试部分

  一、选择题

  1.根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分成( )

  A.动态结构和静态结构

  B.紧凑结构和非紧凑结构

  C.线性结构和非线性结构

  D.内部结构和外部结构

  【参考答案】 C

  2.在下列几种排序方法中,要求内存量最大的是( )

  A.插入排序 B.选择排序 C.快速排序 D.归并排序

  【参考答案】 D

  3.下列不属于软件调试技术的是( )

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

  【参考答案】 B

  4.软件复杂性度量的参数包括( )

  A.效率 B.规模 C.完整性 D.容错性

  【参考答案】 B

  5.数据库系统的核心是( )

  A.数据库 B.数据库管理系统 C.数据库模型 D.软件工具

  【参考答案】 B

  6.最简单的交换排序方法是( )

  A.快速排序 B.选择排序

  C.堆排序 D.冒泡排序

  【参考答案】 D

  7.线性表的顺序存储结构和线性表的链式存储结构分别是( )

  A.顺序存取的存储结构、顺序存取的存储结构

  B.随机存取的存储结构、顺序存取的存储结构

  C.随机存取的存储结构、随机存取的存储结构

  D.任意存取的存储结构、任意存取的存储结构

  【参考答案】 B

  8.在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示( )

  A.模块之间的调用关系 B.程序的组成成分

  C.控制程序的执行顺序 D.数据的流向

  【参考答案】 A

  9.一个关系中属性个数为1时,称此关系为( )

  A.对应关系 B.单一关系 C.一元关系 D.二元关系

  【参考答案】 C

  10.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( )

  A.可重用性差 B.安全性差 C.非持久性 D.冗余性

  【参考答案】 D

  11.下列选中不全是C++关键字的是( )

  A.const,break,default

  B.long,void,using

  C.virtual,extern,include

  D.try,throw,this

  【参考答案】 C

  12.在32位的计算机中,一个char型数据所占的内存长度的字节是( )

  A.4 B.1 C.2 D.8

  【参考答案】 B

  13.有如下程序:

  #include″iostream.h″

  void main()

  { int x=1,a=0,b=0;

  switch(x) {

  case 0:b++;

  case 1:a++;

  case 2:a++;b++; }

  cout<<″a=″<

  该程序的输出结果是( )

  A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2

  【参考答案】 A

  14.若有说明int a[3][4];,则a数组元素的非法引用是( )

  A.a[0][2*1] B.a[1][3]

  C.a[4-2][0] D.a[0][4]

  【参考答案】 D

  15.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )

  A.函数调用可以作为独立的语句存在

  B.函数调用可以无返回值

  C.函数调用可以出现在表达式中

  D.函数调用可以作为一个函数的形参

  【参考答案】 D

  16.以下类定义中可能会引起错误的语句是( )

  class A

  { public:

  ~A(){ } //1

  int i; //2

  private:

  int j; //3

  A(int i){i++;} //4 };

  A.1 B.2 C.3 D.4

  【参考答案】 D

  17.下列描述中错误的是( )

  A.派生类可以作为基类派生其他的子类

  B.派生类继承基类的所有数据成员

  C.派生类可以有多个基类

  D.派生类不能继承一些函数成员

  【参考答案】 B

  18.下列运算符中哪些是不能够被重载的?( )

  A..,.*,->*,::,?: B.++,--,new,delete,==

  C.sizeof,new,delete,++,-- D.sizeof,new,delete,+,-

  【参考答案】 A

  19.下列关于函数模板实参不能省略的情况说明不正确的是( )

  A.从模板函数实参表获得的信息有矛盾

  B.需要获得特定类型的返回值,而不管参数的类型如何

  C.虚拟类型参数没有出现在模板函数的形参表中

  D.函数模板不含有常规形参

  【参考答案】 D

  20.表达式10>5&&6%3的值是( )

  A.-1 B.非零值 C.0 D.1

  【参考答案】 C

  21.以下函数调用语句中含有参数个数是( )

  excc((v1,v2),(v2,v3,v4),v6);

  A.3 B.4 C.5 D.6

  【参考答案】 A

  22.下列程序段的输出结果是( )

  #include

  void fun(fun *x,int *y)

  { cout<<*x<<*y;

   *x=3;

   *y=4; }

  void main()

  { int x=1,y=2;

  fun(&y,&x);

  cout<

  A.2143 B.1212 C.1.4 D.2112

  【参考答案】 A

  23.下列程序的输出结果是( )

  #include

  void main()

  { char *str=″12123434″;

  int x1=0,x2=0,x3=0,x4=0,i;

  for(i=0;str[i]!=′\0′;i++)

  switch(str[i])

  { case′1′:x4++;

   case′2′:x3++;

   case′3′:x2++;

   case′4′:x1++;〗 }

  cout<

  A.8,6,4,1 B.8,6,3,2 C.8,8,4,1 D.8,6,4,2

  【参考答案】 D

  24.每个C++程序中都必须有且仅有一个( )

  A.类 B.预处理命令 C.主函数 D.语句

  【参考答案】 C

  25.设有int x=11;,则表达式(x++*2/3)的值是( )

  A.7 B.8 C.11 D.12

  【参考答案】 A

  26.对表达式for(表达式1;;表达式3)可理解为( )

  A.for(表达式1;0;表达式3) B.for(表达式1;1;表达式3)

  C.for(表达式1;表达式3) D.for(;;表达式3)

  【参考答案】 B 27.有如下说明

  int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

  则数值为9的表达式是( )

  A.*p+9 B.*(p+8) C.*p+=9 D.p+8

  【参考答案】 B

  28.以下对C++语言函数的有关描述中,正确的是( )

  A.在C++语言中调用函数,只能把实参的值传给形参,形参的值不能传送给实参

  B.C++语言函数既可以嵌套定义又可以递归调用

  C.函数必须无返回值,否则不能使用函数

  D.函数必须有返回值,返回值类型不定

  【参考答案】 A

  29.拷贝构造函数的参数一般是( )

  A.某对象名 B.某对象成员名 C.某对象的引用名 D.指向对象的指针名

  【参考答案】 C

  30.下面这个程序的结果是( )

  #include

  class A

  { private:

  int a;

  public:

  void seta();int geta();};

  void A::seta()

  { a=1;}

  int A::gate()

  { return a;}

  class B

  { private:

  int a;

  public:

  void seta();int geta();};

  void B::seta()

  {a=2;}

  int B::geta()

  {return a;}

  class C:public A,public B

  { private:

  int b;

  public:

  void display();};

  void C::display()

  { int b=geta();

  cout<

  void main()

  C c;

  c.seta();

  c.display();}

  A.1 B.2 C.随机输出1或2 D.程序有错

  【参考答案】 D

  31.对于模板定义关键字class和typename说法不正确的是( )

  A.程序中的class并不能都替换为typename

  B.class和typename都可互相替换

  C.程序中的typename都能替换为class

  D.程序中的部分class可以替换为typename

  【参考答案】 B

  32.以下程序的输出结果是( )

  #include

  long fun(int n)

  { long s;

  if(n==1||n==2)s=2;

  else s=n-fun(n-1);

  return s; }

  void main()

  { cout<

  A.1 B.2 C.3 D.4

  【参考答案】 A

  33.有如下程序

  #include

  void main()

  { char ch[2][5]={″6937″,″8254″},*p[2];

   int i,j,s=0;

   for(i=0;i<2;i++)p[i]=ch[i];

   for(i=0;i<2;i++)

   for(j=0;p[i][j]>′\0′;j+=2)

   s=10*s+p[i][j]-′0′;

   cout<

  该程序的输出结果是( )

  A.69825 B.63825 C.6385 D.693825

  【参考答案】 C

  34.以下程序的输出结果是( )

  #include

  void main()

  { char x=040;

  cout<<(x<<1);}

  A.100 B.80 C.64 D.32

  【参考答案】 C

  35.对以下说明语句的正确理解是( )

  int a[10]={6,7,8,9,10};

  A.将5个初值依次赋给a[1]至a[5]

  B.将5个初值依次赋给a[0]至a[4]

  C.将5个初值依次赋给a[6]至a[10]

  D.因为数组长度与初值的个数不相同,所以此语句不正确

  【参考答案】 B

  二、填空题

  1.算法的工作量大小和实现算法所需的存储单元多少分别称为算法的【1】。

  【参考答案】

  【1】时间复杂度和空间复杂度

  2.可以把具有相同属性的一些不同对象归类,称为【2】。

  【参考答案】

  【2】对象类

  3.由关系数据库系统支持的完整性约束是指【3】和参照完整性。

  【参考答案】

  【3】实体完整性

  4.软件结构是以【4】为基础而组成的一种控制层次结构。

  【参考答案】

  【4】模块

  5.数据库保护分为:安全性控制、【5】、并发性控制和数据的恢复。

  【参考答案】

  【5】完整性控制

  6.在C++语言的面向对象程序设计框架中,【6】是程序的基本组成单元。

  【参考答案】

  【6】类

  7.以下程序的输出结果是【7】。

  #include

  void fun()

  { static int a=0;

  a+=2;

  cout<

  void main()

  { int cc;

  for(cc=1;cc<4;cc++)

  fun();

  cout<

  【参考答案】

  【7】2 4 6

  8.以下程序的输出结果是【8】。

  #include

  unsigned fun(unsigned num)

  { unsigned k=1;

  do{k*=num%10;num/=10;}while(num);

  return k; }

  void main()

  { unsigned n=26;

  cout<

  【参考答案】

  【8】12

  9.C++语言中的多态性是在编译时通过【9】和模板体现的,在运行时是通过【10】体现的。

  【参考答案】

  【9】CCCCCC 【10】虚函数

  10.执行下列语句后,c3中的值为【11】

  int c1=1,c2=2,c3;c3=1.0/c2*c1;

  【参考答案】

  【11】0

  11.以下程序的输出结果是【12】。

  #include

  void main()

  { char s[]=″abcdef″;s[3]=′\0′;

  cout<

  【参考答案】

  【12】adc

  12.常数据成员和静态数据成员在使用前共同的要求是要进行【13】。

  【参考答案】

  【13】初始化

  13.表达式x.operator+(y.operator++(0))还可以写成【14】。

  【参考答案】

  【14】x+y++或x+(y++)

  14.构造函数是和【15】同名的函数。

  【参考答案】

  【15】类

  上机部分

  一、改错题

  使用VC6打开考生文件夹下的工程kt10_1,此工程包含一个源程序文件kt10_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:

  classBase

  classD1

  classD2

  classD3

  finBase

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

  #include

  classBase

  { public:

  Base(){cout<<"classBase"<

  voidf(){cout<<"finBase"<

  classD1:virtualpublicBase

  { public:

  D1(){cout<<"classD1"<

  voidf(){cout<<"finD1"<

  /**********found**********/

  classD2:publicBase

  { public:

  D2(){cout<<"classD2"<

  /**********found**********/

  classD3::publicD1,publicD2

  { public:

  D3(){cout<<"classD3"<

  voidmain()

  { D3d;

  /**********found**********/

  d.f(); }

  【参考答案】

  (1)将class D2:public Base

  改为:class D2:virtual public Base

  (2)将class D3::public D1,public D2

  改为:class D3:public D1,public D2

  (3)将d.f();改为:d.Base::f();

  【试题解析】

  (1)主要考查对虚基类的理解,虚基类可以解决二义性的问题,其定义方式是在继承列表中使用virtual关键字,使用虚基类可以避免程序运行中对基类函数调用的不惟一;

  (2)主要考查对类的定义方法的掌握,“::”为作用域符,此处应该使用“:”,因为后面是继承列表;

  (3)主要考查对虚基类函数调用过程的理解,只有使用"::"限定才能访问基类函数,否则将会调用自身的函数,如果该类没有该函数的定义,则会自动调用其父类的该函数,所以必须使用“::”符号。

  二、简单应用题

  请编写一个函数inlinelongsum(intn),用递归函数完成运算:sum(n)=1*1+2*2+???+n*n,递归表达式为sum(n)=sum(n-1)+n2。

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

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

  文件kt10_2.cpp的内容如下:

  #include

  inlinelongsum(intn)

  {

  }

  voidmain()

  { intn;

  cout<<"输入n:";

  cin>>n;

  cout<<"结果为:"<

  【参考答案】

  inline long sum(int n)

  { if(n==1)

  return 1;

  else

  return n*n+sum(n-1); }

  【试题解析】

  本题考查对递归函数掌握的熟练程度。递归的终止条件为n=1时,值为1。

  三、综合应用题

  使用VC6打开考生文件夹下的工程kt10_3,此工程包含一个源程序文件kt10_3.cpp,其中定义了用于表示雇员信息的CEmployee类与表示公司信息的Company类,但这两个类的定义并不完整。请按要求完成下列操作。

  (1)定义Cemployee类的私有数据成员name(大小为50的字符数组)和pay(double型数据),分别用于记录雇员姓名和月薪。请在注释“//**1**”之后添加适当的语句。

  (2)完成Company类默认构造函数的定义,该构造函数将n值赋值给私有成员num,并完成指针emp所指的n个Cemployee对象空间的申请,请在注释“//**2**”之后添加适当的语句。

  (3)完成Company类成员函数voidCompany::add(intcode,charname[50],doublepay)的定义,该函数将某一雇员的编号code、姓名name及月薪pay输入到公司信息中。请在注释“//**3**”之后添加适当的语句。

  (4)完成Company类成员函数voidCompany::print()的定义,使其以"_ispaid_RMBforonemonth"的格式输出公司内所有员工的月薪信息。请在注释“//**4**”之后添加适当的语句。

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

  源程序清单如下:

  #include

  #include

  classCEmployee

  { public:

  voidputname(charn[50]){strcpy(name,n);}

  voidgetname(charn[50]){strcpy(n,name);}

  voidputpay(doubled){pay=d;}

  doublegetpay(){returnpay;}

  private:

  //**1** };

  classCompany

  { private:

  CEmployee*emp;

  intnum;

  public:

  Company(intn);





相关阅读



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