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

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

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

  编辑推荐:

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

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

  全国计算机二级考试C++笔试练习四十套

  笔试部分

  一、选择题

  1.在深度为5的满二叉树中,叶子结点的个数为

  A)32 B)31 C)16 D)15

  【参考答案】 B

  2.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是

  A)bdgcefha B)gdbecfha C)bdgaechf D)gdbehfca

  【参考答案】 D

  3.一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用

  A)栈 B)堆 C)数组 D)链表

  【参考答案】 A

  4.软件工程的理论和技术性研究的内容主要包括软件开发技术和

  A)消除软件危机 B)软件工程管理 C)程序设计自动化 D)实现软件可重用

  【参考答案】 B

  5.开发软件时对提高开发人员工作效率至关重要的是

  A)操作系统的资源管理功能 B)先进的软件开发工具和环境

  C)程序人员的数量 D)计算机的并行处理能力

  【参考答案】 B

  6.在软件测试设计中,软件测试的主要目的是

  A)实验性运行软件

  B)证明软件正确

  C)找出软件中全部错误

  D)发现软件错误而执行程序

  【参考答案】 D

  7.数据处理的最小单位是

  A)数据 B)数据元素 C)数据项 D)数据结构

  【参考答案】 C

  8.索引属于

  A)模式 B)内模式 C)外模式 D)概念模式

  【参考答案】 B

  9.下述关于数据库系统的叙述中正确的是

  A)数据库系统减少了数据冗余

  B)数据库系统避免了一切冗余

  C)数据库系统中数据的一致性是指数据类型一致

  D)数据库系统比文件系统能管理更多的数据

  【参考答案】 B

  10.数据库系统的核心是

  A)数据库 B)数据库管理系统

  C)模拟模型 D)软件工程

  【参考答案】 B

  11.下列关于C++语言类的描述中错误的是

  A)类用于描述事物的属性和对事物的操作

  B)类与类之间通过封装而具有明确的独立性

  C)类与类之间必须是平等的关系,而不能组成层次结构

  D)类与类之间可以通过一些方法进行通信和联络

  【参考答案】 C

  12.C++语言中,表示一条语句结束的标号是

  A)# B); C)// D)}

  【参考答案】 B

  13.以下叙述中正确的是

  A)构成C++语言程序的基本单位是类

  B)可以在一个函数中定义另一个函数

  C)main()函数必须放在其他函数之前

  D)所有被调用的函数一定要在调用之前进行定义

  【参考答案】 A

  14.已知有定义

  const int D=5;

  int i=1;

  double f=0.32;

  char c=15;

  则下列选项错误的是

  A)++i; B)D--; C)c++; D)--f;

  【参考答案】 B

  15.以下程序的输出结果是

  #include

  void reverse(int a[],int n)

  { int i,t;

  for(i=0;i

  { t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;} }

  void main()

  { int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;

  reverse(b,8);

  for(i=6;i<10;i++)s+=b[i];

  cout << s; }

  A)22 B)10 C)34 D)30

  【参考答案】 A

  16.下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,在划线处应填入的选项是

  #include

  void main()

  { int i=0,j,k;

  do{ i++;k=316-13*i;} while( );

  j=k/11;

  cout << "316=13*"<

  A)k/11 B)k%11 C)k/11==0 D)k%11==0

  【参考答案】 B

  17.设有数组定义: char array[]="China";,则数组 array所占的空间为

  A)4个字节 B)5个字节 C)6个字节 D)7个字节

  【参考答案】 C

  18.若已定义:

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

  其中 0≤i≤9, 则对a数组元素不正确的引用是

  A)a[p-a] B)*(&a[i]) C)p[i] D)a[10]

  【参考答案】 D

  19.以下程序的输出结果是

  #include

  void main()

  { int x=1,y=3;

  cout << x++ << ",";

  { int x=0;x+=y*2;

  cout << x <<"," << y << ","; }

  cout << x <<"," << y; }

  A)1,6,3,1,3 B)1,6,3,6,3 C)1,6,3,2,3 D)1,7,3,2,3

  【参考答案】 C

  20.函数fun的返回值是

  fun(char *a,char *b)

  { int num=0,n=0;

  while(*(a+num)!=′\0′)num++;

  while(b[n]){*(a+num)=b[n];num++;n++;}

  return num; }

  A)字符串a的长度 B)字符串b的长度

  C)字符串a和b的长度之差 D)字符串a 和b的长度之和

  【参考答案】 D

  21.下面程序输出的结果是

  #include

  void main()

  { int i;

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

  for(i=0;i<3;i++)

  cout << a[2-i][i]<<""; }

  A)1 5 9 B)7 5 3 C)3 5 7 D)5 9 1

  【参考答案】 B

  22.下面程序的结果为

  #include

  int c;

  class A

  { private:

  int a;

  static int b;

  public:

  A(){a=0; c=0;}

  void seta(){a++;}

  void setb(){b++;}

  void setc(){c++;}

  void display(){cout << a << " " << b << " " << c;} };

  int A::b = 0;

  void main()

  {

  A a1,a2;

  a1.seta();

  a1.setb();

  a1.setc();

  a2.seta();

  a2.setb();

  a2.setc();

  a2.display();

  }

  A)1 2 1 B)1 2 2 C)1 1 2 D)2 2 2

  【参考答案】 B

  23.下列描述中哪个是正确的?

  A)私有派生的子类无法访问父类的成员

  B)类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因为类A的成员对类C是不可访问的

  C)私有派生类不能作为基类派生子类

  D)私有派生类的所有子孙类将无法继续继承该类的成员

  【参考答案】 B

  24.下列关于构造函数说法不正确的是

  A)构造函数必须与类同名 B)构造函数可以省略不写

  C)构造函数必须有返回值 D)在构造函数中可以对类中的成员进行初始化

  【参考答案】 C

  25.如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是

  A)一元运算符 B)二元运算符 C)选项A)和选项B)都有可能 D)重载错误

  【参考答案】 D

  26.在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是

  A)一元成员运算符 B)二元成员运算符

  C)一元友元运算符 D)选项B)和选项C)都可能

  【参考答案】 D

  27.下列关于模板的说法正确的是

  A)模板的实参在任何时候都可以省略

  B)类模板与模板类所指的是同一概念

  C)类模板的参数必须是虚拟类型的

  D)类模板中的成员函数全部都是模板函数

  【参考答案】 D

  28.表示在输出时显示小数位,和在文件输入时判断文件尾的函数分别是

  A)showbase()和eof() B)showpoint()和eof()

  C)showpoint()和bad() D)showpoint()和good()

  【参考答案】 B

  29.下面程序段的运行结果是

  void main()

  { int t, a, b, c;

  a=1;b=2;c=2;

  while(a

  { t=a;a=b;b=t;c--;}

  cout << a << "," << b << "," << c; }

  A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1

  【参考答案】 A

  30.下列程序中画线处应填入的语句是

  class Base

  { public:

  void fun(){cout<<"Base of fun"<

  class Derived:public Base

  { void fun()

  { //显示基类的成员函数fun

  cout<<"Derived of fun"<

  A)fun(); B)Base.fun(); C)Base::fun(); D)Base->fun();

  【参考答案】 C

  31.若定义int k=7,x=12;,则能使值为3的表达式是

  A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5)

  【参考答案】 D

  32.在位运算中,操作数每右移一位,其结果相当于

  A)操作数乘以2 B)操作数除以2 C)操作数乘以4 D)操作数除以4

  【参考答案】 B

  33.有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是

  struct node

  { char data;

  struct node *next;

  } a,b,*p=&a,*q=&b;

  A)a.next=q; B)p.next=&b;

  C)p->next=&b; D)(*p).next=q;

  【参考答案】 B

  34.一个类的友元函数能够访问该类的

  A)私有成员 B)保护成员 C)公有成员 D)所有成员

  【参考答案】 D

  35.下面程序的输出结果是

  #include

  #include

  void main()

  { char p1[10],p2[10];

  strcpy(p1,"abc");

  strcpy(p2,"ABC");

  char str[50]= "xyz";

  strcpy(str+2,strcat(p1,p2));

  cout << str; }

  A)xyzabcABC B)zabcABC C)xyabcABC D)yzabcABC

  【参考答案】 C

  二、填空题

  (1)在树形结构中,树根结点没有 【1】 。

  【参考答案】

  【1】前件

  (2)Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向 【2】 的设计方法。

  【参考答案】

  【2】数据结构

  (3)面向对象的模型中,最基本的概念是对象和 【3】 。

  【参考答案】

  【3】类

  (4)软件设计模块化的目的是 【4】 。

  【参考答案】

  【4】降低复杂性

  (5)数据模型按不同应用层次分成3种类型,它们是概念数据模型、 【5】 和物理数据模型。

  【参考答案】

  【5】逻辑数据模型

  (6)派生类的成员一般分为两部分,一部分是 【6】 ,另一部分是自己定义的新成员。

  【参考答案】

  【6】从基类继承的成员

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

  #include

  void main()

  { int a=5,b=4,c=3,d;

  d=(a>b>c);

  cout << d; }

  【参考答案】

  【7】 0

  (8)设i,j,k均为int型变量,则执行完for(i=0, j=10; i<=j; i++, j--)k=i+j;语句后,k的值为 【8】 。

  【参考答案】

  【8】 10

  (9)如果要把返回值为void的函数A声明为类B的友元函数,则应在类B的定义中加入的语句是 【9】 。

  【参考答案】

  【9】friend void A( );

  (10)如果类B继承了类A,则称类A为类B的基类,类B称为类A的 【10】 。

  【参考答案】

  【10】派生类

  (11)将x+y中的+运算符用友元函数重载应写为 【11】 。

  【参考答案】

  【11】operator+(x,y)

  (12)已知程序的结果为1 2 3,请填空。

  #include

  template

  class A

  { public:

  T x,y,z;

  void display(){cout << x << " " << y << " " << z;} };

  void main()

  { Aa1;

  【12】

  【13】

  【14】

  a1.display(); }

  【参考答案】

  【12】a1.x=1 【13】a1.y=2 【14】a1.z=3

  (13)下列程序段的输出结果是 【15】 。

  cout << fixed << 509.123456789 << endl;

  【参考答案】

  【15】509.123457

  上机部分

  一、改错题

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

  A:noparameters

  B:intparameter

  A:noparameters

  B:intparameter

  C:intparameter

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

  #include

  classA

  { /*****************found*****************/

  private:

  A(){cout<<"A:noparameters\n";}

  A(inta){cout<<"A:intparameter\n";} };

  classB:publicA

  { public:

  B(inta){cout<<"B:intparameter\n";} };

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

  classC:publicB,publicA

  { public:

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

  C(inta)::B(a){cout<<"C:intparameter\n";} };

  voidmain()

  { Bb(1);

  Cc(2); }

  【参考答案】

  (1)将private:改为:public:

  (2)将class C:public B,public A改为:class C:public B

  (3)将C(int a)::B(a){cout<<"C: int parameter\n"; }

  改为:C(int a):B(a){cout<<"C: int parameter\n";}

  【试题解析】

  (1)一个类的构造函数和析构函数可以由系统自动生成,也可以由用户提供,但构造函数和析构函数都必须是该类的公有成员函数,否则编译时将出现错误,不能被调用;

  (2)A已经是B的基类,C公有继承B,A也就成为了C的基类,根据程序的运行结果可知,C是要公有继承B;

  (3)派生类的构造函数,初始化基类的参数,调用基类的构造函数时,使用符号“:”,而不是“::”;

  二、简单应用题

  编写函数fun(),它的功能是求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并做为函数值返回。

  例如:n为1000时,函数值应为s=153.909064。

  注意:部分源程序给出如下。

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

  试题程序:

  #include

  #include

  #include

  doublefun(intn)

  { main()

  { clrscr();

  printf("s=%f\n",fun(1000)); }

  【参考答案】

  double fun(int n)

  { double s=0.0;

  int i;

  for(i=0; i

  /*从0~n中找到既能被3整除同时又能被7整除的数,并将这些数求和*/

  if(i%3==0&&i%7==0)

  s=s+i;

  s=sqrt(s); /*对s求平方根*/

  return s; }

  【试题解析】

  本题的解题思路是:逐个取得从0~n之间的所有数,对每次取得的数进行条件判断,条件是既能被3整除同时又能被7整除,注意:这两个条件要求同时成立,因此用到了“&&”运算符。满足条件,该数就被累加到s中去,所有符合条件的数找完后,用sqrt()函数对s求平方根。

  三、综合应用题

  使用VC6打开考生文件夹下的工程kt14_3。此工程包含一个kt14_3.cpp,其中定义了二维坐标类Coordinate和三维坐标类ThreeDCoord,其中ThreeDCoord类由Coordinate类public派生,但两个类的定义并不完整。请按要求完成下列操作,将程序补充完整。

  (1)定义类Coordinate的保护数据成员x和y,它们都是int型的数据,代表二维坐标的横纵坐标值。请在注释“//**1**”之后添加适当的语句。

  (2)根据类Coordinate定义后的成员函数Display的实现,补充该函数在类Coordinate定义体内的声明,Display为二维坐标类的虚函数。请在注释“//**2**”之后添加适当的语句。

  (3)完成二维坐标类Coordinate的构造函数,将参数a和b分别赋值给数据成员x和y。请在注释“//**3**”之后添加适当的语句。

  (4)根据ThreeDCoord类构造函数的声明,补充ThreeDCoord构造函数的实现,参数a和b通过调用基类的构造函数来初始化基类的数据成员x和y,c赋值给数据成员z。请在注释“//**4**”之后添加适当的语句。

  输出结果如下:

  [1,2]

  [3,4,5]

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

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

  #include

  classCoordinate

  { protected:

  //**1**

  public:

  Coordinate(inta=0,intb=0);

  //**2** };

  Coordinate::Coordinate(inta,intb)

  { //**3** }

  voidCoordinate::Display()const

  { cout<<'['<

  classThreeDCoord:publicCoordinate

  { intz;

  public:

  ThreeDCoord(inta=0,intb=0,intc=0);

  virtualvoidDisplay()const; };

  //**4**

  voidThreeDCoord::Display()const

  { cout<<'['<

  voidmain()

  { Coordinatec(1,2);

  ThreeDCoordt(3,4,5);

  c.Display();

  t.Display(); }

  【参考答案】

  (1)protected:

  int x;

  int y;

  (2)virtual void Display() const;

  (3)x=a; y=b;

  (4)ThreeDCoord::ThreeDCoord(int a, int b, int c) : Coordinate(a, b)

  【试题解析】

  本题主要考查对类数据成员的定义、构造函数、派生类及虚函数的理解,是C++类知识的一个综合考核。对虚函数的定义格式及继承类构造函数的定义格式请多加注意。





相关阅读



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