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

2012年计算机二级C++第九套笔试模拟试题及答案分析

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

全国计算机等级考试二级C++笔试模拟试题(九)

  一、选择题

  在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。

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

  A)32

  B)31

  C)16

  D)15

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

  A)bdgcefha

  B)gdbecfha

  C)bdgaechf

  D)gdbehfca

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

  A)栈

  B)堆

  C)数组

  D)链表

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

  A)消除软件危机

  B)软件工程管理

  C)程序设计自动化

  D)实现软件可重用

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

  A)操作系统的资源管理功能

  B)先进的软件开发工具和环境

  C)程序人员的数量

  D)计算机的并行处理能力

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

  A)实验性运行软件

  B)证明软件正确

  C)找出软件中全部错误

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

  (7)数据处理的最小单位是

  A)数据

  B)数据元素

  C)数据项

  D)数据结构

  (8)索引属于

  A)模式

  B)内模式

  C)外模式

  D)概念模式

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

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

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

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

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

  (10)数据库系统的核心是

  A)数据库

  B)数据库管理系统

  C)模拟模型

  D)软件工程

  编辑推荐:

  2012年计算机二级C++考点归纳汇总

  2011年全国计算机等级考试二级C++模拟试题及答案汇总

  2011年计算机等级考试二级C++冲刺全真模拟试题及答案汇总

  2011年计算机二级C++辅导实例编程汇总

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

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

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

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

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

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

  A)#

  B);

  C)//

  D)}

  (13)以下叙述中正确的是

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

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

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

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

  (14)已知有定义

  const int D=5;

  int i=1;

  double f=0.32;

  char c=15;

  则下列选项错误的是

  A)++i;

  B)D--;

  C)c++;

  D)--f;

  (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

  (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

  C)k/11==0

  D)k==0

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

  A)4个字节

  B)5个字节

  C)6个字节

  D)7个字节

  (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]

  (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

  (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的长度之和

  编辑推荐:

  2012年计算机二级C++考点归纳汇总

  2011年全国计算机等级考试二级C++模拟试题及答案汇总

  2011年计算机等级考试二级C++冲刺全真模拟试题及答案汇总

  2011年计算机二级C++辅导实例编程汇总

  (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

  (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

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

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

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

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

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

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

  A)构造函数必须与类同名

  B)构造函数可以省略不写

  C)构造函数必须有返回值

  D)在构造函数中可以对类中的成员进行初始化

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

  A)一元运算符

  B)二元运算符

  C)选项A)和选项B)都可能

  D)重载错误

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

  A)一元成员运算符

  B)二元成员运算符

  C)一元友元运算符

  D)选项B)和选项C)都可能

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

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

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

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

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

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

  A)showbase()和eof()

  B)showpoint()和eof()

  C)showpoint()和bad()

  D)showpoint()和good()

  (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

  (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();

  编辑推荐:

  2012年计算机二级C++考点归纳汇总

  2011年全国计算机等级考试二级C++模拟试题及答案汇总

  2011年计算机等级考试二级C++冲刺全真模拟试题及答案汇总

  2011年计算机二级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)

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

  A)操作数乘以2

  B)操作数除以2

  C)操作数乘以4

  D)操作数除以4

  (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;

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

  A)私有成员

  B)保护成员

  C)公有成员

  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

  编辑推荐:

  2012年计算机二级C++考点归纳汇总

  2011年全国计算机等级考试二级C++模拟试题及答案汇总

  2011年计算机等级考试二级C++冲刺全真模拟试题及答案汇总

  2011年计算机二级C++辅导实例编程汇总

  二、填空题

  请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。

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

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

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

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

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

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

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

  #include

  void main()

  {

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

  d=(a>b>c);

  cout << d;

  }

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

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

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

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

  (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();

  }

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

  cout << fixed << 509.123456789 << endl;

  编辑推荐:

  2012年计算机二级C++考点归纳汇总

  2011年全国计算机等级考试二级C++模拟试题及答案汇总

  2011年计算机等级考试二级C++冲刺全真模拟试题及答案汇总

  2011年计算机二级C++辅导实例编程汇总

参考答案及分析

  一、选择题

  (1)B

  解析: 所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个叶子结点。这就是说,在满二叉树中,层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。

  (2)D

  解析: 前序遍历的第一个结点a为树的根结点;中序遍历中a的左边的结点为a的左子树,a右边的结点为a的右子树;再分别对a的左右子树进行上述两步处理,直到每个结点都找到正确的位置。

  (3)A

  解析: 一些较流行的程序语言允许过程的递归调用。递归调用就是过程调用本身。递归实现的是:当过程每一次执行后,都能返回到最近一次调用它的过程中。这样各调用点之间形成一种后进先出关系,而栈结构正适合来存储这些调用点。

  (4)B

  解析: 软件工程的目标是,在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基于这一目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。

  (5)B

  解析: 软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境。工具和环境的使用又进一步提高了软件的开发效率、维护效率和软件质量。

  (6)D

  解析: 使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。

  (7)C

  解析: 数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C)。

  (8)B

  解析: 内模式(Internal Schema)又称物理模式(Physical Schema),它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径。

  (9)B

  解析: 数据库系统的数据具有高共享性和低冗余性,但不能完全避免数据冗余;数据的一致性是指在系统中同一数据的不同出现应保持相同的值。

  (10)B

  解析: 数据库管理系统(Database Management System,简称DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。

  (11)C

  解析: C++语言中的类是可以组成层次结构的,类是用于描述事物的属性和对事物的操作,类与类之间有相对的独立性,但其可以通过一些方法进行信息的通信。

  (12)B

  解析: C++语言中语句的结束符是分号。

  (13)A

  解析: 关于C++语言,我们应该了解以下必须要掌握的基础知识:

  ① C++程序是由类构成的。② 一个函数由两部分组成:函数的首部和函数体。③ 一个类由两部分组成:类成员变量和类成员函数。④ 一个C++程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何(main函数可以放在程序最前头,也可以放在程序最后,或写在一些函数之前,在另一些函数之后)。⑤ C++程序在书写上,表现形式比较自由,一行内可以写几个语句,一个语句可以分写在几行上。每个语句和数据定义的最后必须有一个分号。⑥ 可以用/*……*/和//对C++语言的程序的任何部分作注释。

  (14)B

  解析: "++","--"运算符不能用于常量。

  (15)A

  解析: 在main函数中,调用reverse函数将b数组中的前8个成员进行互置,执行完毕后,b数组中的成员为{8,7,6,5,4,3,2,1,9,10},在执行for循环结构后,将b[6],b[7]……b[9]的值相加,结果为1+2+9+10=22。注意:在计算累加和时,应将累加变量赋值为零。

  (16)B

  解析: do-while语句的一般形式是

  do

  {

  语句

  } while (表达式);

  特点是:"直到型"循环结构。先执行一次"语句",判"表达式",当"表达式"为非0,再执行"语句",直到"表达式"的值为0时停止执行语句。在一般情况下,用while和do-while语句解决同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但当while后面的"表达式"一开始就为"假"时,两种循环的结果不同。这是因为此时while循环的循环不被执行,而do-while循环的循环体被执行一次。本题的关键是两个加数分别能被13和11整除,在i=0时,直接将316赋值给k,当k的值为0时,则不必执行循环,将执行j=k/11语句,输出结果,所以该表达式合理的条件是k。

  (17)C

  解析: 在给数组赋值时,可以用一个字符串作为初值,这种方法直观,方便而且符合人们的习惯。数组array的长度不是5,而是6,这点必须要注意。因为字符串常量的最后由系统加上一个′\0′,因此,上面的初始化与下面的等价:

  char array[]={′C′,′h′,′i′,′n′,′a′,′\0′};

  (18)D

  解析: 通常,引用一个数组元素可以用下标法,如a[p-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。

  (19)C

  解析: cout << x++;语句中,程序先输出x的值,然后再加1,所以结果为1,此时x的值为2;在int x=0;x+=y*2;语句中,将0的值赋给x,然后再运算x+=y*2的值,结果为x=6(此时x的值为局部变量),y的值不变,在最后在执行了x语句后的值,所以应为2。

  (20)D

  解析: 本题首先通过第一个while循环计算字符串a的长度,再通过第二个循环,将字符串a和b相连,最后返回连接后的总长度。

  (21)B

  解析: 首先,当i=0时,数组中的位置是a[2][0]=7,当然,如果用排除法的话,就不用考虑后面的循环了,因为在4个选项中,第1个数为7的选项只有B)。本题执行第2次循环时,i的值为1,则cout函数中的数组指向为a[1][1]=5,依次循环,可求出答案。

  (22)B

  解析: C++语言中全局变量是任何函数都可以改变的量,静态变量的有效范围在定义它的类中,而普通的变量的有效性只在使用它的函数中,在本题中c为全局变量,b为静态变量,a为普通变量,b和c在类A的对象a1和a2中都自加1。所以b,c为2,a为1。

  (23)B

  解析: C++语言中一个派生类能不能继承基类的所有数据成员受继承方式的限制。

  (24)C

  解析: 构造函数是一类特殊的函数,其特点是函数名与类同名,没有返回值,也可以省略不写,还可以对类中的成员进行初始化。

  (25)D

  解析: C++中用友元函数重载运算符至少有一个参数,重载一目运算符要有一个参数,重载二目运算符要有两个参数。

  (26)D

  解析: C++语言中用成员函数重载时,重载一目运算符没有参数,重载二目运算符要有一个参数。

  (27)D

  解析: 在C++中规定如果一个类被声明为类模板,那么其中的所有成员函数就都成为了模板函数。

  (28)B

  解析: 表示在输出时显示小数位,和在文件输入时判断文件尾的函数分别是showpoint()和eof()。

  (29)A

  解析: 本题中(a  (30)C

  解析: 如果在子类中要访问父类的函数应用"∷"运算符。

  (31)D

  解析: 运算符"%"的两侧都应该是整型数。另外,本题需要掌握的知识点是x%=k等价于x=x%k。

  (32)B

  解析: 右移运算符">>"是双目运算符。其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。例如:设a=15,a>>2 表示把000001111右移为00000011(十进制3)。

  (33)B

  解析: 要把结点b连接到结点a之后,必须把b 的地址给a的next指针,选项A)中,指针变量q保存的就是变量b的地址,选项B)中的p是指针变量,应该是p->next=&b;在选项D)中,用*运算符取出结构体变量,并且保存的就是b的地址,所以正确。

  (34)D

  解析: 一个类的友元函数对类成员的访问能力等同于类的成员函数,即能访问类的所有成员。

  (35)C

  解析: 该函数的调用方式是strcpy(字符数组, 字符串)其中"字符串"可以是串常量,也可以是字符数组。函数的功能是将"字符串"完整地复制到"字符数组"中,字符数组中原有内容被覆盖。使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志′\0′一起复制。②不能用赋值运算符"="将一个字符串直接赋值给一个字符数组,只能用strcpy()函数来处理。strcat(字符数组, 字符串)功能是把"字符串"连接到"字符数组"中的字符串尾端,并存储于"字符数组"中。"字符数组"中原来的结束标志,被"字符串"的第一个字符覆盖,而"字符串"在操作中未被修改。使用该函数时注意:①由于没有边界检查,编程者要注意保证"字符数组"定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题。②连接前两个字符串都有结束标志′\0′,连接后"字符数组"中存储的字符串的结束标志′\0′被舍弃,只在目标串的最后保留一个′\0′。

  二、填空题

  (1)前件

  解析: 在树形结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点;每一个结点可以有多个后件,它们都称为该结点的子结点。没有后件的结点称为叶子结点。

  (2)数据结构

  解析: 结构化分析方法主要包括:面向数据流的结构化分析方法(SA-Structured analysis),面向数据结构的Jackson方法(JSD-Jackson system development method)和面向数据结构的结构化数据系统开发方法(DSSD-Data structured system development method)。

  (3)类

  解析: 面向对象模型中,最基本的概念是对象和类。对象是现实世界中实体的模型化;将属性集和方法集相同的所有对象组合在一起,可以构成一个类。

  (4)降低复杂性

  解析: 模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程,由此分解来降低复杂性。

  (5)逻辑数据模型

  解析: 数据是现实世界符号的抽象,而数据模型(data model)则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。

  数据模型按不同的应用层次分成3种类型,它们是概念数据模型(conceptual data model)、逻辑数据模型(logic data model)、物理数据模型(physical data model)。

  (6)从基类继承的成员

  解析: 派生类的成员由继承的成员和自己定义的成员组成。

  (7)0

  解析: 本题的关键在于对变量c的赋值运算:

  d=(a>b>c)

  d=(5>4>3)

  先算5>4,为真,得1,即:d=(1>3),此时1>3,为假,得0。

  (8)10

  解析: 该for语句以i为0、j为10初始化,循环条件是i<=j,每次循环后i增1、j减1,循环体是将i与j的和赋给k。这样变量k将保存的是最后一次赋给它的值。一次循环后i为1、j为9,二次循环后i为2、j为8,……,五次循环后i为5、j为5,继续第六次循环,将i与j的和10存于k后,i为6、j为4,结束循环。所以循环执行后k为10。

  (9)friend void A();

  解析: C++中类的友元函数在声明时应在该函数前面加上关键字friend,同样如果要声明一个类为另一个类的友元类也要在前面类名前加上friend。

  (10)派生类

  解析: 如果类A为类B的基类,那么类B称为类A的派生类。

  (11)operator+(x,y)

  解析: C++中用成员函数重载x+y为x.operator+(y);,用友元函数重载x+y为operator+(x,y)。

  (12)a1.x=1;~a1.y=2;~a1.z=3;

  解析: 通过程序的结果知道数据类型是int,所以调用时声明模板实参为int的,再对x,y,z进行赋值。

  (13)509.123457

  解析: fixed的意义是在小数点后保留六位,所以fixed输出为509.123457。

  编辑推荐:

  2012年计算机二级C++考点归纳汇总

  2011年全国计算机等级考试二级C++模拟试题及答案汇总

  2011年计算机等级考试二级C++冲刺全真模拟试题及答案汇总

  2011年计算机二级C++辅导实例编程汇总





相关阅读



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