试题

3月全国计算机等级考试二级C++笔试真题

时间:2024-10-11 10:27:15 秀雯 试题 我要投稿
  • 相关推荐

3月全国计算机等级考试二级C++笔试真题

  无论是身处学校还是步入社会,我们都经常看到试题的身影,借助试题可以更好地检查参考者的学习能力和其它能力。那么你知道什么样的试题才能有效帮助到我们吗?下面是小编帮大家整理的3月全国计算机等级考试二级C++笔试真题,仅供参考,希望能够帮助到大家。

3月全国计算机等级考试二级C++笔试真题

  3月全国计算机等级考试二级C++笔试真题 1

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

  (1)下列叙述中正确的是 。

  A)算法的效率只与问题的规模有关,而与数据的存储结构无关.

  B)算法的时间复杂度是指执行算法所需要的计算工作量

  C)数据的逻辑结构与存储结构是一一对应的

  D)算法的时间复杂度与空间复杂度一定相关.

  (2)在结构化程序设计中,模块划分的原则是 。

  A) 各模块应包括尽量多的功能

  B) 各模块的规模应尽量大

  C)各模块之间的联系应尽量紧密

  D) 模块内具有高内聚度,模块间具有低耦合度

  (3)下列叙述中正确的是 。

  A)软件测试的主要目的是发现程序中的错误.

  B)软件测试的主要目的是确定程序中错误的位置.

  C)为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作

  D)软件测试是证明软件没有错误

  (4) 下面选项中不属于面向对象程序设计特征的是 。

  A)继承性

  B)多态性

  C)类比性

  D)封装性

  (5) 下列对列的叙述正确的是 。

  A) 队列属于非线性表

  B) 队列按”先进后出”的原则组织数据

  C)队列在队尾删除数据

  D) 队列按“先进先出”原则组织数据

  (6)对下列二叉树

  进行前序遍历的结果为

  A)DYBEAFCZX

  B)YDEBFZXCA

  C)ABDYECFXZ

  D)ABCDEFXYZ

  (7)某二叉树中有n个度为2的结点则该二叉树中的叶子结点数为

  A)n+1

  B)n-1

  C)2n

  D)n/2

  (8)在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是 。

  A)井

  B)交

  C)投影

  D)笛卡儿乘积

  (9)在E-R图中,用来表示实体之间是联系的图形是 。

  A) 矩形

  B)椭圆形

  C)菱形

  D)平行四边形

  (10)下列叙述中错误的.是 。

  A) 在数据库系统中,数据的物理结构必须与逻辑结构一致.

  B)数据库技术的根本目标是要解决数据的共享问题

  C)数据库设计是指在已有数据库管理系统的基础上建立数据库

  D)数据库系统需要操作系统的支持

  (11)为了取代C中带参数的宏,在C++中使用

  A)重载函数

  B)内联函数

  C)递归函数

  D)友元函数

  (12)下列关于类定义的说法中,正确的是

  A)类定义中包括数据成员和函数成员的声明

  B)类成员的缺省访问权限是保护的

  C) 数据成员必须被声明为私有的

  D)成员函数只能在类体外进行定义

  (13)下列关于派生类构造函数和析构函数的说法中,错误的是

  A)派生类的构造函数会隐含调用基类的构造函数

  B)如果基类中没有缺省构造函数,那么派生类必须定义构造函数

  C)在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数

  D)在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数

  (14)通过运算符重载,可以改变运算符原有的

  A)操作数类型

  B)操作数个数

  C)优先级

  D)结合性

  (15)有如下函数模板:

  template T souare(T x) (retumx * x ;)

  基中T是

  A)函数形参

  B)函数实参

  C)模板形参

  D)模板实参

  (16)使用输入输出操作符setw,可以控制

  A)输出精度

  B)输出宽度

  C)对齐方式

  D)填充字符

  (17)下列字符串中,不可以用作C++标识符的是

  A)y_2006

  B)____TEST__H

  C)Retum

  D)switch

  (18)字面常量42、4.2、42L的数据类型分别是

  A)long、double int

  B)long、float、int

  C)int、double、long

  D)int、float、long

  (19)执行下列语句段后,输出字符“*”的个数是

  for(int i =50;I>1;— i )cout<<”*”

  A)48

  B)49

  C)50

  D)51

  (20)有如下程序段

  int i =0, j=1;

  int &r=i ; // ①

  r =j; //②

  int*p=&i ; //③

  *p=&r ; //④

  基中会产生编译错误的语句是

  A)④

  B)③

  C)②

  D)①

  (21)有如下函数定义:

  void func (int a,int&b) {a++; b++;}

  若执行代码段:

  int x=0 ,y=1

  func(x,y);

  则变量x和y值分别是

  A)0和1

  B)1和1

  C)0和2

  D)1和2

  (22)有如下程序:

  #include

  using namespace std;

  class A{

  public

  static int a;

  void init(){a=1;}

  A(int a=2) {init();a++;}

  };

  int A:;a=0

  A obj;

  Int main()

  {

  cout<  retum0;

  }

  运行时输出的结果是

  A)0

  B)1

  C)2

  D)3

  (23)下列有关继承和派生的叙述中,正确的是

  A) 派生类不能访问基类的保护成员

  B)作为虚基类的类不能被实例化

  C)派生类应当向基类的构造函数传递参数

  D)虚函数必须在派生类中重新实现

  (24)下列运算符中,不能被重载的是

  A)&&

  B)!=

  C).

  D)++

  (25)下列函数模板的定义中,合法的是

  A) template Tabs(T x) {return x<0 – x: x;}

  B)template class Tabs(Tx){retumx<0 -x;x;}

  C)template Tabs(T x){retum x<0 -x;x;}

  D)template T abs(T x){returm x<0 -x;x;}

  (26)在语句cin>>data;中,cin是

  A)C++的关键字

  B)类名

  C)对象名

  D)函数名

  (27)有如下程序:

  #include

  using namespace std;

  class test {

  private:

  int a;

  public:

  test(){cout<<”constructor”<  test(int a){cout<  test(const test&_test)

  {

  a=_testa;

  cout<<”copy constructor”<  }

  test(){cout<<”destructor”<  };

  int main()

  }

  test A(3)

  return0;

  运行时输出的结果是

  A)3

  B)constructor

  destruclor

  C)copy constructor

  D)3

  dstructor destruclor

  (28)若有如下类声明

  class My Class {

  public:

  MyClass() {cout<<1;}

  };

  执行下列语句

  MyClass a,b[2],*P[2];

  以后,程序的输出结果是

  A)11

  B)111

  C)1111

  D11111

  (29)有如下程序:

  #include

  using namespace std;

  class point {

  public:

  static int number;

  public:

  point(){number++;

  ~point(){number-;}

  };

  imt point::number=0;

  void main(){

  point*ptr;

  printA,B;

  {

  point*ptr_point=new point{3};

  ptr=ptr_point;

  }

  pointC;

  cout<  []ptr;

  }

  运行时输出的结果是

  A)3

  B)4

  C)6

  D)7

  

  (30)如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。

  #include

  using namespace std;

  class Base{

  int a,b;

  public:

  Bace(int x ,int y) { a=x; b=y;}

  Void show(){ cout<  }

  clsaa Derived:public Base {

  int c ,d;

  public:

  Derived(int x,int y,int z,int m):Base(x,y){c=z; d=m;}

  Void show(){ cout<  };

  int main()

  {

  Base B1(50,50),*pb;

  Derived DI(10,20,30,40);

  Pb=&D1;

  Pb->show();

  Return 0;

  }

  运行时输出的结果是

  A)10,20

  B)30,40

  C)20,30

  D)50,50

  (31)有如下程序:

  #include

  using namespace std;

  class A

  {

  public;

  A(int i ){x= i ;}

  Void sispa(){cout<  Private:

  int x ;

  };

  class B;publicA

  {

  public;

  B(int i):A(i +10) {x =i ;}

  voud dispb() {dispa();cout<  Private:

  Int x;

  };

  int main()

  {

  B b(2);

  b.dispb()

  retum 0:

  }

  运行时输出的结果是

  A)10,2

  B)12,10

  C)12,2

  D)2,2

  (32)虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数,而非虚函数不支持多态调用。有如下程序:

  #include

  using namespace std;

  class Base

  {

  public:

  virtual void f(){cout<<”f0+”;}

  void g() {cout<<”g0+”;}

  };

  class Derived:public Base

  {

  public:

  void f() {cout<<”f+”;}

  void g() {cout<<”g+”;}

  };

  int main()

  {

  Derived d;

  Base*p=&d;

  p->f(); p->g();

  return 0:

  }

  运行时输出的结果是

  A)f+g+

  B)f0+g+

  C)f+g0+

  D)f0+g0+

  (33)下面程序中对一维坐标点类Point进行运算符重载

  #include

  using namespace std;

  class point {

  public:

  point (int vaI) {x=val;}

  point& operator++(){x++;retum*this;}

  print operator++(int) {point old=*this,++(*this);retum old;}

  int GetX() const {retum x;}

  private:

  int x;

  };

  int main()

  {

  point a(10);

  cout<<(++a).GetX();

  cout<  retum();

  }

  编译和运行情况是

  A)运行时输出1011

  B)运行时输出1111

  C)运行时输出1112

  D)编译有错

  (34)有如下程序:

  #include

  using namespace std;

  int main()

  {

  char str[100],*p;

  cout<<”please input a string:”;

  cin>>str;

  p=str;

  for(int i =0;*p!=”\0”;p++, i ++);

  cout<< i <  retum 0;

  }

  运行这个程序时,若输入字符串为

  abcdefg abcd

  则输出结果是

  A)7

  B)12

  C)13

  D)100

  (35)有如下程序:

  #include

  using namespace std:

  class Sample

  {

  friend long fun (Sample s);

  public:

  Sample (long a ){x=a;}

  Private:

  long x;

  };

  long fun (Sample s)

  {

  if(s.x<2)retum 1;

  retum s.x*fun(Sample(s.x-a));

  }

  int main()

  {

  int sum=0

  for(int i =0; i<6; i ++) { sum+=fun(Sample( i );) }

  cout<  retum 0;

  }

  运行时输出的结果是

  A)120

  B)16

  C)154

  D)34

  二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。

  (1)在深度为7的满二叉树中,度为2的结点个数为 【1】 。

  (2)软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于 【2】 测试。

  (3)在数据库系统中,实现各种数据管理体制功能的核心软件称为 【3】 。

  (4)软件生命周期可分为多个阶段,一般分为定义阶段、开发和维护阶段。编码和测试属于 【4】 阶段。

  (5)在结构化分析使用的数据流图(DFD)中,利用 【5】 对其中的图形元素进行确切解释。

  (6)C++中只有两个逻辑常量:true和 【6】 。

  (7)若要访问指针变量p所指向的数据,应使用表达式 【7】 。

  (8)已知一个函数的原型是:

  int fn(double x);

  若要以5.27为实参调用该函数,应使用表达式 【8】 。

  (9)有如下定义:

  class MA{

  int value;

  public:

  MA(int n=0):valut(n){}

  };

  MA*ta,tb;

  其中MA类的对象名标识符是 【9】 。

  (10)如下类定义中包含了构造函数和拷贝数的原型声明请在横线处写正确的内容,使拷贝构造函数的声明完整。

  Class my Class{

  Private:

  Int data:

  Public:

  MyClass(int value); //构造函数

  MyClass(const 【10】 another Object); //拷贝构造函数

  }

  (11)用来派生新类的称为 【11】 ,而派生出的新类称为它的子类或派生类。

  (12)有如下程序:

  #include

  using namespace std;

  clsaa CA{

  public:

  CAD{cout<  };

  class CB ;private CA{

  public;

  CB(){cout<  };

  int main(){cout<  };

  int main(){

  CA a;

  CB b;

  retum0;

  }

  这个程序的输出结果是 【12】 。

  (13)若将一个二元运算符重载为类的成员函数,其形参个数应该是 【13】 个。

  (14)有如下程序:

  #include

  using namespace std;

  class DA{

  int k;

  public:

  DA(int x=1): k (x){}

  ~DA(){cout<  };

  int main(){

  DA d[]={DA(3),DA(3),DA(3)};

  DA* p=new DA[2];

  []p;

  return0;

  }

  这个程序的输出结果是 【14】 。

  (15)C++语言中的多态性分为编译时的多态性和 【15】 时的多态性。

  3月全国计算机等级考试二级C++笔试真题 2

  (1)算法的时间复杂度是指_______。

  A)执行算法程序所需要的时间

  B)算法程序的长度

  C)算法执行过程中所需要的基本运算次数

  D)算法程序中的指令条数

  答案:C

  评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。

  (2)下列叙述中正确的是________。

  A)线性表是线性结构B)栈与队列是非线性结构

  C)线性链表是非线性结构D)二叉树是线性结构

  答案:A

  评析:一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。

  (3)下面关于完全二叉树的叙述中,错误的是_________。

  A)除了最后一层外,每一层上的结点数均达到最大值

  B)可能缺少若干个左右叶子结点

  C)完全二叉树一般不是满二叉树

  D)具有结点的完全二叉树的深度为[log2n]+1

  答案:B

  评析:满二叉树指除最后一层外每一层上所有结点都有两个子结点的'二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点(叶子结点)的二叉树。

  3月全国计算机等级考试二级C++笔试真题 3

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

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

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

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

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

  答案:A

  评析:由数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值。

  (2)关系表中的每一横行称为一个________。

  A)元组B)字段C)属性D)码

  答案:A

  评析:在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。

  (3)数据库设计包括两个方面的设计内容,它们是________。

  A)概念设计和逻辑设计B)模式设计和内模式设计

  C)内模式设计和物理设计D)结构特性设计和行为特性设计

  答案:A

  评析:数据库设计可分为概念设计与逻辑设计。概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。逻辑设计的主要工作是将ER图转换为指定的RDBMS中的关系模型。

  (4)请读程序:

  #include

  main

  {

  int a;float b,c;

  scanf(“%2d%3P%4f’,&a,&b,&C);

  printf(” a=%d,b=%ec。%f ”,a,b,C);

  }

  若运行时从键盘上输入9876543210l,则上面程序的输出结果是________。

  A)a=98,b=765,c=432 1

  B)a=1 0,b=432,c=8765

  C)a=98,b=765.000000,c=432 1.000000

  D)a=98,b=765.0,c=432 1.0

  答案:C

  评析:scanf把用户从键盘录入的数字的第1、2位存入整型变量a;把第3、4、5位存入单精度实型变量b,把第6、7、8、9位存入单精度实型变量c,用户录入的第10位被scanf遗弃。这时变量a、b、c的值分别为:98、765.000000、4321.000000。

  (5)一个良好的算法由下面的基本结构组成,但不包括__________。

  A)顺序结构B)选择结构C)循环结构D)跳转结构

  答案:D

  评析:1966年,Bohra和Jacopini提出了以下三种基本结构,用这三种基本结构作为表示一个良好算法的'基本单元:1、顺序结构;2、选择结构;3、循环结构。

  (6)请选出以下程序的输出结果________。

  #include

  sub(x,y,z)

  int x,y,星符号z:

  {星符号z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&C)后,c的值发生变化,其值为-12-(-5)=-7。

  (7)下面程序在屏幕上的输出是________。

  main

  {

  printf(”ab c”);

  }

  A)ab c B)a c C)abc D)ab c

  答案:B

  评析:c语言中允许使用一种特殊形式的字符常量,、就是以一个“”开头的字符序列,这样的字符称为“转义字符”。常用的转义字符有: ,换行;,水平制表;,退格;,回车。

  (8)若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是_______。

  A)pb=&x; B)pb=x; C)星符号pb=星符号、/)还包括自增自减运算符(++、–),在c语言解析表达式时,它总是进行贪婪咀嚼,这样,该表达式就被解析为i++ ++ +i,显然该表达式不合c语言语法。

  (10)若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元

  int星符号int) D)(int星符号)

  答案:D

  评析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型+)。

  (11)下面程序输出的结果是__________。

  main

  {

  int i=5,J=9,x;

  x=(I==j?i:(j=7));

  printf(” %d,%d”,I,J);

  }

  A)5,7 B)5,5 C)语法错误D)7,5

  答案:A

  评析:条件表达式的一般形式为:表达式I?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式l的值为假,则求解表达式3。本题中先判断i==j,不等,执行j=7;然后执行x=7。故本题为A。

【3月全国计算机等级考试二级C++笔试真题】相关文章:

9月全国计算机等级考试二级JAVA笔试真题03-29

计算机等级考试二级C++笔试选择题04-23

全国计算机二级考试C++真题09-20

2007年3月全国计算机等级考试二级C++笔试真题参考答案03-28

2006年9月全国计算机等级考试二级access笔试真题03-29

2006上半年全国计算机二级C++笔试真题11-17

2005年上半年全国计算机二级C++笔试真题03-02

全国英语等级考试二级真题及答案09-20

3月全国计算机等级考试二级VFP考试真题09-26