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

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

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

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

  一、选择题

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

  (1)循环链表的主要优点是

  A)不再需要头指针了

  B)从表中任一结点出发都能访问到整个链表

  C)在进行插入、删除运算时,能更好的保证链表不断开

  D)已知某个结点的位置后,能够容易的找到它的直接前件

  (2)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是

  A)ABCED

  B)DCBEA

  C)DBCEA

  D)CDABE

  (3)n个顶点的强连通图的边数至少有

  A)n-1

  B)n(n-1)

  C)n

  D)n+1

  (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)dsfa,df4,f$

  B)huhj,a^,k2

  C)3k,h,j_9

  D)_ok,jk,k8

  (12)C++语言中用于定义类的关键字是

  A)class

  B)struct

  C)default

  D)sizeof

  (13)设以下变量均为int类型,则值不等于7的表达式是

  A)(x=y=6,x+y,x+1)

  B)(x=y=6,x+y,y+1)

  C)(x=6,x+1,y=6,x+y)

  D)(y=6,y+1,x=y,x+1)

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

  #include

  void main()

  { int a=21,b=11;

  cout << --a+b;}

  A)30

  B)31

  C)32

  D)33

  (15)while 和do-while循环的主要区别是

  A)do-while的循环体至少无条件执行一次

  B)while的循环控制条件比do-while的循环控制条件更严格

  C)do-while允许从外部转到循环体内

  D)do-while 的循环体不能是复合语句

  (16)与 y=(x>0?1:x<0?-1:0);的功能相同的if语句是

  A)if (x>0)y=1;

  else if(x<0)y=-1;

  else y=0;

  B)if(x)

  if(x>0)y=1;

  else if(x<0)y=-1;

  C)y=-1;

  if(x)

  if(x>0)y=1;

  else if(x==0)y=0;

  else y=-1;

  D)y=0;

  if(x>=0)

  if(x>0)y=1;

  else y=-1;

  (17)若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为 (假设a[0][0]位于数组的第一个位置上)

  A)i*m+j

  B)j*m+i

  C)i*m+j-1

  D)i*m+j+1

  (18)下面程序段的运行结果是

  #include

  void main()

  { char *s="abcde";

  s+=2;

  cout << &s;}

  A)cde

  B)字符′c′

  C)字符′c′的地址

  D)无确定的输出结果

  (19)下面叙述不正确的是

  A)派生类一般都用公有派生

  B)对基类成员的访问必须是无两义性的

  C)赋值兼容规则也适用于多重继承的组合

  D)基类的公有成员在派生类中仍然是公有的

  (20)下面程序应能对两个整型变量的值进行交换。以下正确的说法是

  #include

  void swap(int p,int q)

  { int t;

  t=p;

  p=q;

  q=t;}

  void main()

  { int a=10,b=20;

  cout << a << " " << b;

  swap(&a,&b);

  cout << a << " " << b;}

  A)该程序完全正确

  B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可

  C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可

  D)以上说法都不对

  编辑推荐:

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

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

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

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

  (21)关于友元的概念错误的是

  A)友元函数没有this指针

  B)调用友元函数时必须在它的实参中给出要访问的对象

  C)一个类的成员函数也可以作为另一个类的友元函数

  D)只能在类的公有段声明友元

  (22)关于抽象类下面说法正确的是

  A)抽象类就是其中有函数定义但没有实现的类

  B)抽象类是可以被实例化的

  C)派生类不能成为抽象类

  D)抽象类的子类必须实现父类中的纯虚函数

  (23)下面程序的结果是

  #include

  class test { private:

  int num;

  public:

  test();

  int getint(){return num;}

  ~test();};

  test :: test()

  { num =0;}

  test::~test()

  { cout<<"Destructor is active"<  void main()

  { test x[3];

  cout<<"Exiting main"<  A)Exiting main

  Destructor is active

  Destructor is active

  Destructor is active

  B)Exiting main

  Destructor is active

  Destructor is active

  C)Exiting main

  Destructor is active

  D)Exiting main

  (24)如果表达式--x+y中,--是作为成员函数重载的, +是作为成员函数重载的,则该表达式还可为

  A)y.operator+(x.operator--(0))

  B)y.operator+(x.operator--())

  C)y.operator+(operator--(x,0))

  D)operator+(x.operator--())

  (25)下列语句不能够用于打开C根目录下文件test.txt的语句是

  A)ifstream fin; fin.open("C:\\test.txt");

  B)ifstream fin("C:\\test.txt");

  C)A)和B)

  D)ifstream fin; fin("C:\\test.txt");

  (26)以下哪个基类中的成员函数表示纯虚函数?

  A)virtual void vf (int)

  B)void vf (int)=0

  C)virtual void vf(=0)

  D)virtual void yf(int){ }

  (27)下面程序输出的结果是

  #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[i][i] << " ";}

  A)1 5 9

  B)7 5 3

  C)3 5 7

  D)5 9 1

  (28)派生类继承基类的方式有

  A)public

  B)private

  C)protected

  D)以上都对

  (29)下列程序的运行结果为

  #include

  class Location {

  protected:

  int X, Y;

  public:

  void SetX(int myx){X=myx;}

  void SetY(int myy){Y=myy;}

  void showxy(){cout << "X=" << X << " " << "Y=" << Y <  class Rectangle : public Location{

  private:

  int H, W;

  public:

  void SetH(int myh){H=myh;}

  void SetW(int myw){W=myw;}

  void show(){ cout << "X=" << X << " " << "Y=" << " " << Y << " " << "H=" << H << " " << "W=" << W << endl;}};

  void main()

  { Rectangle r1;

  r1.SetX (3);

  r1.SetY (5);

  r1.SetH (4);

  r1.SetW (6);

  r1.showxy();

  r1.show();}

  A)X=3 Y=5

  X=3 Y=5 H=4 W=6

  B)X=3 Y=5

  X=3 Y=5 H=3 W=6

  C)X=3 Y=5

  X=3 Y=4 H=4 W=6

  D)X=3 Y=5

  X=3 Y=3 H=4 W=6

  (30)有以下程序

  #include

  void ss(char *s,char t)

  { while(*s)

  { if(*s==t)*s=t-′a′+′A′;

  s++;}}

  void main()

  { char str1[100]="abcddfefdbd",c=′d′;

  ss(str1,c); cout << str1;}

  程序运行后的输出结果是

  A)ABCDDEFEDBD

  B)abcDDfefDbD

  C)abcAAfefAbA

  D)Abcddfefdbd

  编辑推荐:

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

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

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

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

  (31)有以下程序

  #include

  void main()

  { int a=5,b=0,c=0;

  if(a=b+c)cout << "***"<  else cout << "$$$"<  下列选项叙述正确的是

  A)有语法错不能通过编译

  B)可以通过编译但不能通过连接

  C)输出***

  D)输出$$$

  (32)已知各变量的定义如下

  int i=8,k,a,b;

  unsigned long w=5;

  double x=1.42,y=5.2;

  则以下符合C++语言语法的表达式是

  A)a+=a-=(b=4)*(a=3)

  B)a=a*3+2

  C)x%(-3)

  D)y=float i

  (33)以下程序中循环体总的执行次数是

  int i,j;

  for(i=6;i>1;i--)

  for(j=0;j  {……}

  A)20

  B)261

  C)15

  D)25

  (34)对于下面的程序,说法正确的是

  #include

  void main()

  { int x=3,y=4,z=2;

  if(x=y+z)cout << "x=y+z";

  else cout << "x!=y+z";}

  A)不能通过编译

  B)输出6

  C)输出x!=y+z

  D)输出x=y+z

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

  #include

  void main()

  { int a[3],i,j,k=2;

  for(i=0;i<3;i++)a[i]=i;

  for(i=0;i  for(j=0;j  a[j]=a[i];

  cout << a[2];}

  A)2

  B)3

  C)1

  D)0

  编辑推荐:

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

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

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

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

  二、填空题

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

  (1)常用的黑箱测试有等价分类法、 1 、因果图法和错误推测法4种。

  (2)测试的目的是暴露错误,评价程序的可靠性;而 2 的目的是发现错误的位置并改正错误。

  (3)软件维护活动包括以下几类:改正性维护、适应性维护、 3 维护和预防性维护。

  (4)在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为 4 。

  (5)关键字ASC和DESC分别表示 5 的含义。

  (6)C++语言中表示双精度浮点数的关键字是 6 。

  (7)执行下列语句后,c3中的值为 7

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

  (8)若从键盘输入70,则以下程序输出的结果是 8 。

  #include

  void main()

  { int a;cin >> a;

  if(a>50)cout << a;

  if(a>40)cout << a;

  if(a>30)cout << a;}

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

  #include

  void main()

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

  cout << s << endl;}

  (10)以下程序运行后的输出结果是 10 。

  #include

  void fun(int x,int y)

  { x=x+y;y=x-y;x=x-y;

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

  void main()

  { int x=2,y=3;fun(x,y);

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

  (11)常数据成员和静态数据成员在使用前共同的要求是要进行 11 。

  (12)在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是 12 。

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

  (14)要采用"cin,cout"进行输入输出时,必须包含的头文件是 14 。

  (15)构造函数是和 15 同名的函数。

  编辑推荐:

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

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

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

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

参考答案及分析

  一、选择题

  (1)B

  解析: 循环链表就是将单向链表中最后一个结点的指针指向头结点,使整个链表构成一个环形,这样的结构使得从表中的任一结点出发都能访问到整个链表。

  (2)B

  解析: 栈操作原则上"后进先出",栈底至栈顶依次存放元素A、B、C、D,则表明这4个元素中D是最后进栈,B、C处于中间,A最早进栈。所以出栈时一定是先出D,再出C,最后出A。

  (3)C

  解析: 在有向图中,若任意两个顶点都连通,则称该图是强连通图,这样的有向图的形状是环状,因而至少应有n条边。

  (4)C

  解析: 结构化程序设计方法设计出的程序具有明显的优点。其一,程序易于理解、使用和维护;其二,提交了编程工作的效率,降低了软件开发成本。其中,人们更重视前者。

  (5)C

  解析: 模块的独立程序是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。

  (6)A

  解析: 通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护3个阶段。

  (7)A

  解析: 软件的白盒测试方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。

  (8)A

  解析: 在文件系统中,相互独立的记录其内部结构的最简单形式是等长同格式记录的集合,易造成存储空间大量浪费,不方便使用。而在数据库系统中,数据是结构化的,这种结构化要求在描述数据时不仅描述数据本身,还要描述数据间的关系,这正是通过采用特定的数据模型来实现的。

  (9)A

  解析: 数据库设计包括数据库概念设计和数据库逻辑设计两个方面的设计内容。

  (10)C

  解析: 实体是客观存在且可以相互区别的事物。实体可以是具体的对象,如一个学生,也可以是一个抽象的事件,如一次出门旅游等。因此,实体既可以是有生命的事物,也可以是无生命的事物,但它必须是客观存在的,而且可以相互区别。

  (11)D

  解析: C++语言标识符只能由数字,字母和下划线组成,并且只能以字母和下划线为开头。

  (12)A

  解析: C++中类定义的关键字是class。class不能大写。

  (13)C

  解析: C++语言中逗号","也是一种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其一般形式为:表达式1, 表达式2,其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。逗号表达式的一般形式可以扩展为:表达式1,表达式2,表达式3,…,表达式n,它的值为表达式n的值。

  (14)B

  解析: 自减运算符位于变量之前时,先使变量的值减1,再进行运算。

  (15)A

  解析: while是先判断条件再执行语句;do-while则是先执行一次语句再判断条件,从而决定是否继续再执行循环体中的语句,这正是二者主要区别。

  (16)A

  解析: 条件运算符要求有三个操作对象,它是C++语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3,先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。本题中用了两次三目运算符。

  (17)A

  解析: a[i][j]元素之前有i行元素(每行有m个元素),在a[i][j]的前面还有j个元素,因此a[i][j]之前共有i*m+j个元素。

  (18)C

  解析: 对于字符串指针,其保留的是整个串的首地址,即为第一个字符的起始地址,当该指针做算术运算时,就是该指针根据其类型向后移动相应的存储空间。

  (19)D

  解析: C++语言中如果基类的成员是公有的,它被继承后在子类中该成员可能是公有的,也可能不是,主要看继承的权限。

  (20)D

  解析: 本题应该把swap()函数改成这样:swap(int *p,int *q){int t; t=*p;*p=*q;*q=t;}执行程序时,先将a的地址传递给指针变量p,b的地址传递给指针变量q,然后将*p(a的值)的值传递给t,将*q(b的值)传递给*p,将t的值传递给*q,从而将a值和b值互换。

  (21)D

  解析: C++中的友元可以在一个类中的任何位置声明,不一定必须在公有段,友元没有自己的this指针,调用友元函数时必须在它的实参中给出要访问的对象,并且一个类的成员函数是可以作为另一个类的友元函数的。

  (22)D

  解析: C++语言中的抽象类就是类中至少有一个纯虚函数的类,抽象类不能被实例化,继承抽象类的类必须实现抽象类中的纯虚函数。

  (23)A

  解析: C++语言中析构函数是在程序退出不用该类的对象时进行调用。

  (24)B

  解析: C++语言中用成员函数重载--x为:x. operator--(),用成员函数重载x+y为:x. operator+(y)。

  (25)D

  解析: C++语言中打开文件有两种方式① ifstream fin("test.dat")② ifstream fin;fin.open("test.dat");。

  (26)B

  解析: C++中纯虚函数的定义与虚函数的关键字一样,在函数末尾要加上"=0"。

  (27)A

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

  (28)D

  解析: 派生类继承基类的方式有3种:public,private和protected,常用的是public.

  (29)A

  解析: 本题是一道简单的成员函数应用题,考生只要按着主函数中生成的类Rectangle的对象r1进行成员函数的调用即可得到答案。

  (30)B

  解析: 在内存中,字符数据以ASCII码存储,它的存储形式就与整数的存储形式相类似。C++语言使字符型数据和整型数据之间可以通用。也可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算,在本题中,s++相当于s=s+1,即让s指向数组中的下一个元素。

  (31)D

  解析: 解答本题时,先判断if语句,因为a=b+c为零,则执行else语句。

  (32)A

  解析: 选项B)中a在运算前未赋初值,在C++语言里变量在运算前必须赋初值;选项C)中的模运算符"%"两侧均应为整型数据;选项D)应改为y=(float)i。

  (33)A

  解析: 本题中第1个for循环执行5次后结束,第2个for循环执行5次。第2个for循环中第1次执行了6次,第2次执行了5次,第3次执行了4次,第4次执行了3次,第5次执行了2次,共20次。

  (34)D

  解析: 解答本题关键是要理解if后面的括号里的是赋值语句而并非关系判断,赋完值后x不等于零,C++语言里非零都作真处理,所以输出结果为"x=y+z",故答案为选项D),注意"="与"=="的区别。

  (35)A

  解析: 本题里有三个for循环,但要分清楚,第一个是单独的给三个元素赋值,赋完值后三个a[0]=0,a[1]=1,a[2]=2;后面的两个for是嵌套循环,对数组元素的赋值,但由于k=2,初值已定for里的条件是小于k,所以不管怎么处理都影响不到a[2],故答案为2。

  二、填空题

  (1)边值分析法

  解析: 黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价分类法、边值分析法、因果图法和错误推测法4种。

  (2)调试

  解析: 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定;调试也称排错,它是一个与测试有联系又有区别的概念。具体来说,测试的目的是暴露错误,评价程序的可靠性,而调试的目的是发现错误的位置,并改正错误。

  (3)完善性

  解析: 软件维护活动包括以下几类:改正性维护、适应性维护、完善性维护和预防性维护。改正性维护是指在软件交付使用后,为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程;适应性维护是指为了使软件适应变化,而去修改软件的过程;完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性;预防性维护是为了提高软件的可维护性、可靠性等,为以后的进一步改进软件打下良好基础。

  (4)消息

  解析: 在面向对象技术中,主要用到对象(object)、类(class)、方法(method)、消息(message)、继承(inheritance)、封装(encapsulation)等基本概念。其中消息是用来请求对象执行某一处理或回答某些信息的要求。

  (5)升序排列和降序排列

  解析: ASC表示升序排列,DESC表示降序排列,多用在索引定义和SELECT语句中的ORDER子句中。

  (6)double

  解析: C++语言中基本的数据类型关键字,有int, float, double。

  (7)0

  解析: 在赋值运算中,如果表达式中变量和常量的数据类型不一致就会自动进行类型转换。系统会计算1.0/c2,由于1.0是实型,所以均先转化为双精度型0.500000,再与c1转化后的双精度数相乘得0.500000。但其要赋值给整型变量c3,故要进行强制转换,得c3的值为0。

  (8)707070

  解析: 本题考查对if语句的掌握,当输入70以后,程序中的3个if语句都成立,所以分别输出70。

  (9)abc

  解析: 本题中,给数组s中的第4个元素s[3]赋以′\0′,则s数组中只有前3个元素有效,输出结果为abc。

  (10)3,2,2,3

  解析: main函数和fun函数中的变量x和y都是局部变量,它们各自独立,在本题fun函数中:接入实参的值传递: x=2,y=3,执行:x=x+y后,x=5,y=3,执行:x=x-y后,x=5,y=3,执行:y=x-y后,x=3,y=2。所以,第一次执行cout显示结果是3和2返回到main函数中,输出main函数中的x和y的值2,3。

  (11)初始化

  解析: C++语言中常数据成员和静态数据成员都要进行初始化,只是初始化的方法不一样。

  (12)构造函数

  解析: 构造函数在创建对象时系统自动调用,其功能是使用给定的值将对象初始化。

  (13)x+y++`x+(y++)

  解析: 因为y.operator++(0)是对成员y重载运算符,所以是成员重载,在参数表中又有一个参数,所以是重载后缀++,所以是x+(y++)。

  (14)iostream.h

  解析: iostream.h是与输入输出有关的类文件。

  (15)类

  解析: C++语言中的构造函数就是在类中定义的和类名一样的函数。

  编辑推荐:

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

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

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

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





相关阅读



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