试题

3月计算机二级考试《C++》真题

时间:2024-09-30 11:38:44 敏冰 试题 我要投稿
  • 相关推荐

3月计算机二级考试《C++》真题

  在社会的各个领域,我们都离不开试题,借助试题可以对一个人进行全方位的考核。什么样的试题才是科学规范的试题呢?下面是小编帮大家整理的3月计算机二级考试《C++》真题,仅供参考,欢迎大家阅读。

3月计算机二级考试《C++》真题

  3月计算机二级考试《C++》真题 1

  一、选择题

  (1)下列关于栈叙述正确的是

  A)栈顶元素最先能被删除

  B)栈顶元素最后才能被删除

  C)栈底元素永远不能被删除

  D)以上三种说法都不对

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

  A)有一个以上根结点的数据结构不一定是非线性结构

  B)只有一个根结点的数据结构不一定是线性结构

  C)循环链表是非线性结构

  D)双向链表是非线性结构

  (3)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)

  A)3

  B)4

  C)6

  D)7

  (4)在软件开发中,需求分析阶段产生的主要文档是

  A)软件集成测试计划

  B)软件详细设计说明书

  C)用户手册

  D)软件需求规格说明书

  (5)结构化程序所要求的基本结构不包括

  A)顺序结构

  B)GOTO跳转

  C)选择(分支)结构

  D)重复(循环)结构

  (6)下面描述中错误的是

  A)系统总体结构图支持软件系统的详细设计

  B)软件设计是将软件需求转换为软件表示的过程

  C)数据结构与数据库设计是软件设计的任务之一

  D)PAD图是软件详细设计的表示工具

  (7)负责数据库中查询操作的数据库语言是

  A)数据定义语言

  B)数据管理语言

  C)数据操纵语言

  D)数据控制语言

  (8)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是

  A)1:1联系

  B)1:m联系

  C)m:1联系

  D)m:n联系

  (9)有三个关系R、S和T,则由关系R和S得到关系T的操作是

  A)自然连接

  B)交

  C)除

  D)并

  (10)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是

  A)-369

  B)369

  C)0.369

  D)整数集合{1,2,3,4,5}

  (11)为了提高函数调用的实际运行速度,可以将较简单的函数定义为

  A)内联函数

  B)重载函数

  C)递归函数

  D)函数模板

  (12)若AA为一个类,a为该类的非静态数据成员,在该类的一个成员函数定义中访问a时,其书写格式为

  A)a

  B)AA.a

  C)a()

  D)AA::a()

  (13)当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是

  A)任何

  B)公有或保护

  C)保护或私有

  D)私有

  (14)若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是

  A)Data+(Data);

  B)Data operator+(Data);

  C)Data+operator(Data);

  D)operator+(Data,Data);

  (15)下列关于函数模板的描述中,正确的是

  A)函数模板是一个实例函数

  B)使用函数模板定义的函数没有返回类型

  C)函数模板的类型参数与函数的参数相同

  D)通过使用不同的类型参数,可以从函数模板得到不同的实例函数

  (16) C++系统预定义了4个用于标准数据流的对象,下列选项中不属于此类对象的是

  A)cout

  B)cin

  C)cerr

  D)cset

  (17)Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是

  A)cpp

  B)exe

  C)obj

  D)lik

  (18)字符串“a+b=12\n\t”的长度为

  A)12

  B)10

  C)8

  D)6

  (19)有如下程序:

  #include

  using namespace std;

  int main(){

  int f,f1=0,f2=1;

  for(int i=3;i<=6;i++){

  f=f1+f2;

  f1=f2;f2=f;

  }

  cout<  return 0;

  }

  运行时的输出结果是

  A)2

  B)3

  C)5

  D)8

  (20)有如下程序:

  #include

  using namespace std;

  int main(){

  int a[6]={23,15,64,33,40,58};

  int s1,s2;

  s1=s2=a[0];

  for(int* p=a+1;p  if(s1>*p) s1=*p;

  if(s2<*p) s2=*p;

  }

  cout<  return 0;

  }

  运行时的输出结果是

  A)23

  B)58

  C)64

  D)79

  (21)有如下程序:

  #include

  using namespace std;

  void f1(int& x,int& y) {int z=x; x=y; y=z;}

  void f2(int x;int y) {int z=x; x=y; y=z;}

  int main(){

  int x=10,y=26;

  f1(x,y);

  f2(x,y);

  cout<  return 0;

  }

  运行时的输出结果是

  A)10

  B)16

  C)26

  D)36

  (22)有如下程序:

  #include

  using namespace std;

  class XA{

  int a;

  public:

  static int b;

  XA(int aa):a(aa) {b++;}

  ~XA(){}

  int get(){return a;}

  };

  int XA::b=0;

  int main(){

  XA d1(2),d2(3);

  cout<   return 0;

  }

  运行时的输出结果是

  A)5

  B)6

  C)7

  D)8

  (23)有如下程序:

  #include

  using namespace std;

  class Point{

  int x,y;

  public:

  Point(int x1=0,int y1=0):x(x1),y(y1){}

  int get(){return x+y;}

  };

  class Circle{

  Point center;

  int radius;

  public:

  Circle(int cx,int cy,int r):center(cx,cy),raaius(r){}

  int get(){return center.get()+radius;}

  };

  int main(){

  Circle c(3,4,5);

  cout<  return 0;

  }

  运行时的输出结果是

  A)5

  B)7

  C)9

  D)12

  (24)若要对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是

  A)operator long() const;

  B)operator long(BigNumber);

  C)long operator long() const;

  D)long operator long(BigNumber);

  (25)有如下函数模板定义:

  template

  T1 FUN(T2 n){return n*5.0;}

  若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为

  A)FUN(9)

  B)FUN<9>

  

  (26)下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是

  A)cout<  B)cout<  C)cout<  D)cout<

  (27)下列关于析构函数的描述中,错误的是

  A)析构函数可以重载

  B)析构函数由系统自动调用

  C)每个对象的析构函数只被调用一次

  D)每个类都有析构函数

  (28)下列关于构造函数的描述中,错误的是

  A)构造函数名与类名相同

  B)构造函数可以有返回值

  C)构造函数可以重载

  D)每个类都有构造函数

  (29)若PAT是一个类,则程序运行时,语句“PAT(*ad)[3];”调用PAT的构造函数的次数是

  A)0

  B)1

  C)2

  D)3

  (30)下列描述中,错误的是

  A)公有继承时基类中的公有成员在派生类中仍是公有成员

  B)公有继承时基类中的保护成员在派生类中仍是保护成员

  C)保护继承时基类中的公有成员在派生类中仍是公有成员

  D)保护继承时基类中的保护成员在派生类中仍是保护成员

  (31)生成派生类对象时,派生类构造函数调用基类构造函数的条件是

  A)无需任何条件

  B)基类中显式定义了构造函数

  C)派生类中显式定义了构造函数

  D)派生类构造函数明确调用了基类构造函数

  (32)下列关于派生类和基类的描述中,正确的是

  A)派生类成员函数只能访问基类的公有成员

  B)派生类成员函数只能访问基类的公有和保护成员

  C)派生类成员函数可以访问基类的所有成员

  D)派生类对基类的默认继承方式是公有继承

  (33)有如下类模板定义:

  template

  class BigNumber{

  long n;

  public:

  BigNumber(T i):n(i){}

  BigNumber operator+(BigNumber b){

  return BigNumber(n+b.n);

  }

  };

  己知b1、b2是BigNumber的两个对象,则下列表达式中错误的是

  A)bl+b2

  B)b1+3

  C)3+b1

  D)3+3

  (34)下列关于文件流的描述中,正确的是

  A)文件流只能完成针对磁盘文件的输入输出

  B)建立一个文件流对象时,必须同时打开一个文件

  C)若输入流要打开的文件不存在,将建立一个新文件

  D)若输出流要打开的文件不存在,将建立一个新文件

  (35)有如下程序:

  #include

  using namespace std;

  class Pair{

  int m,n;

  public:

  Pair(int j,int k):m(j),n(k){}

  int get() {return m;}

  int get() const {return m+n;}

  };

  int main(){

  Pair a(3,5);

  const Pair b(3,5);

  cout+a.get()<  return 0;

  }

  运行时的输出结果是

  A)33

  B)38

  C)83

  D)88

  二、填空题

  (1)有序线性表能进行二分查找的前提是该线性表必须是 【1】 存储的。

  (2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF。则后序遍历结果为 【2】 。

  (3)对软件设计的.最小单位(模块或程序单元)进行的测试通常称为 【3】 测试。

  (4)实体完整性约束要求关系数据库中元组的 【4】 属性值不能为空。

  (5)在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称 【5】 是关系A的外码。

  (6)若有定义语句“int x=10,y=20,z=20;”,则表达式x>z&&y==z的值为 【6】 。

  (7)有如下语句序列:

  int x=-10;while(++x){ }

  运行时while循环体的执行次数为 【7】 。

  (8)有如下语句序列:

  int arr[2][2]={{9,8},{7,6}};

  int *p=arr[0]+1; cout<<*p<  运行时的输出结果是 【8】 。

  (9)函数fun的功能是将一个数字字符串转换为一个整数,请将函数补充完整。

  int fun(char *str){

  int num=0;

  while(*str){

  num*=10;

  num+= 【9】 ;

  str++;

  }

  return num;

  }

  (10)若要将函数“void FriFun();”声明为类MyClass的友元函数,则应在类MyClass的定义中加入语句 【10】 。

  (11)下列程序的输出结果为012,请根据注释将横线处的缺失部分补充完整。

  #include

  using namespace std;

  class Test{

  public:

  Test(int a) {data=a;}

  ~Test() {}

  void print(){cout<  private:

  int data;

  };

  int main(){

  Test t[3]={ 【11】 };//对有3个元素的Test类对象数组t初始化t[i].print();

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

  return 0;

  }

  (12)请在横线处填写派生类Derived的继承方式,使得程序的输出结果为Base。

  #include

  using namespace std;

  class Base{

  public:

  void print(){cout<<"Base";}

  };

  class Derived: 【12】 Base{};

  int main(){

  Derived d;

  d.print();

  return 0;

  }

  (13)下列程序的输出结果为1 2.3 2 4.6,请将横线处的缺失部分补充完整。

  #include

  using namespace std;

  class Base{

  public:

  Base(int a):idata(a){}

  void print(){cout<  private:

  int idata;

  };

  class Derived:public Base{

  public:

  Derived(int a;double b): 【13】 ,ddata(b){}

  void print(){Base::print();cout<  private:

  double ddata;

  };

  int main(){

  Derived dl(1,2.3),d2(2,4.6);

  d1.print();

  d2.print();

  return 0;

  }

  (14)下列程序的输出结果为-5/8 -3/4,请将横线处的缺失部分补充完整。

  #include

  using namespace std;

  class Fraction{ //“分数”类

  public:

  Fraction(double a,double b):num(a),den(b){}

  ~Fraction(){}

  //重载取负运算符“-”,返回一个分数对象,其分子是原来分子的相反数。

  Fraction operator-(){

  【14】

  return f;

  }

  void print(){ cout<  private:

  double num; //分子

  double den; //分母

  };

  int main(){

  Fraction f1(5;8),f2(3,4);

  (-f1).print();(-f2).print();

  return 0;

  }

  (15)函数Min的功能是返回具有n个元素的数组array中的最小值。请将横线处的缺失部分补充完整,使得程序的输出结果为1.24。

  #include

  using namespace std;

  template

  T Min(T* array,int n){

  T min=array[0];

  for(int i=1;i  if(array[i]  return min;

  }

  int main(){

  double arr[8]={5.2,48.45,41.01,42,51.2,1.24,14.12,42};

  cout<< 【15】 ;

  return 0;

  }

  3月计算机二级考试《C++》真题 2

  一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分)

  (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.可封装的

  B. 自顶向下

  C.模块化

  D. 逐步求精

  (7)软件详细设计产生的图如下:

  该图是

  A.N-S图

  B.PAD图

  C.程序流程图

  D. E-R图

  (8)数据库管理系统是

  A.操作系统的一部分

  B.在操作系统支持下的系统软件

  C.一种编译系统

  D. 一种操作系统

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

  A.椭圆图

  B.矩形

  C.菱形

  D. 三角形

  (10)有三个关系R,S和T如下:

  其中关系T由关系R和S通过某种操作得到,该操作为

  A.选择

  B.投影

  C.交

  D.并

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

  A.程序设计的任务就是编写程序代码并上机调试

  B.程序设计的任务就是确定所用数据结构

  C.程序设计的任务就是确定所用算法

  D.以上三种说法都不完整

  (12)以下选项中,能用作用户标识符的是

  A.void

  B.8_8

  C._0_

  D.unsigned

  (13)阅读以下程序

  #include

  main()

  { int case; float printF;

  printf(“请输入2个数:”);

  scanf(“%d %f”,&case,&pjrintF);

  printf(“%d %f ”,case,printF);

  }

  该程序编译时产生错误,其出错原因是

  A.定义语句出错,case是关键字,不能用作用户自定义标识符

  B.定义语句出错,printF不能用作用户自定义标识符

  C.定义语句无错,scanf不能作为输入函数使用

  D.定义语句无错,printf不能输出case的值

  (14)表达式:(int)((double)9/2)-(9)%2的`值是

  A.0

  B.3

  C.4

  D.5

  (15)若有定义语句:int x=10;,则表达式x-=x+x的值为

  A.-20

  B.-10

  C.0

  D.10

  (16)有以下程序

  #include

  main()

  { int a=1,b=0;

  printf(“%d,”,b=a+b);

  printf(“%d ”,a=2*b);

  }

  程序运行后的输出结果是

  A.0,0

  B.1,0

  C.3,2

  D.1,2

  17)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是

  A.if(a>B. c=a,a=b,b=c;

  B.if(a>B. {c=a,a=b,b=c;}

  C.if(a>B. c=a;a=b;b=c;

  D.if(a>B. {c=a;a=b;b=c;}

  (18)有以下程序

  #include

  main()

  { int c=0,k;

  for (k=1;k<3;k++)

  switch (k)

  { default: c+=k

  case 2: c++;break;

  case 4: c+=2;break;

  }

  printf(“%d ”,C.;

  }

  程序运行后的输出结果是

  A.3

  B.5

  C.7

  D.9

  (19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是

  A.if((a>b)&&(b>C.) k=1;

  else k=0;

  B.if((a>b)||(b>C. k=1;

  else k=0;

  C.if(a<=B. k=0;

  else if(b<=C.k=1;

  D.if(a>B. k=1;

  else if(b>C.k=1;

  else k=0;

  20)有以下程序

  #include

  main()

  { char s[]={“012xy”};int i,n=0;

  for(i=0;s[i]!=0;i++)

  if(s[i]>=’a’&&s[i]<=’z’) n++;

  printf(“%d ”,n);

  }

  程序运行后的输出结果是

  A.0

  B.2

  C.3

  D.5

  (21)有以下程序

  #include

  main()

  { int n=2,k=0;

  while(k++&&n++>2);

  printf(“%d %d ”,k,n);

  }

  程序运行后的输出结果是

  A.0 2

  B.1 3

  C.5 7

  D.1 2

  (22)有以下定义语句,编译时会出现编译错误的是

  A.char a=’a’;

  B.char a=’ ’;

  C.char a=’aa’;

  D.char a=’x2d’;

  (23)有以下程序

  #include

  main()

  { char c1,c2;

  c1=’A’+’8’-‘4’;

  c2=’A’+’8’-‘5’;

  printf(“%c,%d ”,c1,c2);

  }

  已知字母A的ASCII码为65,程序运行后的输出结果是

  A.E,68

  B.D,69

  C.E,D

  D.输出无定值

  (24)有以下程序

  #include

  void fun(int p)

  { int d=2;

  p=d++; printf(“%d”,p);}

  main()

  { int a=1;

  fun(a); printf(“%d ”,a);}

  程序运行后的输出结果是

  A.32

  B.12

  C.21

  D.22

  (25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能

  #define MIN -2147483647

  int findmax (int x[],int n)

  { int i,max;

  for(i=0;i

  { max=MIN;

  if(max

  return max;

  }

  造成错误的原因是

  A.定义语句int i,max;中max未赋初值

  B.赋值语句max=MIN;中,不应给max赋MIN值

  C.语句if(max

  D.赋值语句max=MIN;放错了位置

  (26)有以下程序

  #include

  main()

  { int m=1,n=2,*p=&m,*q=&n,*r;

  r=p;p=q;q=r;

  printf(“%d,%d,%d,%d ”,m,n,*p,*q);

  }

  程序运行后的输出结果是

  A.1,2,1,2

  B.1,2,2,1

  C.2,1,2,1

  D.2,1,1,2

  (27)若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是

  A.p=a

  B.q[i]=a[i]

  C.p=a[i]

  D.p=&a[2][1]

  (28)有以下程序

  #include

  #include

  main()

  { char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];

  printf(“%d,”,strlen(p));printf(“%s ”,p);

  }

  程序运行后的输出结果是

  A.9,One*World

  B.9,One*Dream

  C.10,One*Dream

  D.10,One*World

  (29)有以下程序

  #include

  main()

  { int a[ ]={2,3,5,4},i;

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

  switch(i%2)

  { case 0:switch(a[i]%2)

  {case 0:a[i]++;break;

  case 1:a[i]--;

  }break;

  case 1:a[i[=0;

  }

  for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“ ”);

  }

  A.3 3 4 4

  B.2 0 5 0

  C.3 0 4 0

  D.0 3 0 4

  (30)有以下程序

  #include

  #include

  main()

  { char a[10]=”abcd”;

  printf(“%d,%d ”,strlen(a),sizeof(a));

  }

  程序运行后的输出结果是

  A.7,4

  B.4,10

  C.8,8

  D.10,10

  (31)下面是有关C语言字符数组的描述,其中错误的是

  A.不可以用赋值语句给字符数组名赋字符串

  B.可以用输入语句把字符串整体输入给字符数组

  C.字符数组中的内容不一定是字符串

  D.字符数组只能存放字符串

  (32)下列函数的功能是

  fun(char * a,char * b)

  { while((*b=*a)!=’’) {a++,b++;} }

  A.将a所指字符串赋给b所指空间

  B.使指针b指向a所指字符串

  C.将a所指字符串和b所指字符串进行比较

  D.检查a和b所指字符串中是否有’’

  (33)设有以下函数

  void fun(int n,char * s) {……}

  则下面对函数指针的定义和赋值均是正确的是

  A.void (*pf)(); pf=fun;

  B.viod *pf(); pf=fun;

  C.void *pf(); *pf=fun;

  D.void (*pf)(int,char);pf=&fun;

  (34)有以下程序

  #include

  int f(int n);

  main()

  { int a=3,s;

  s=f(a);s=s+f(a);printf(“%d ”,s);

  }

  int f(int n)

  { static int a=1;

  n+=a++;

  return n;

  }

  程序运行以后的输出结果是

  A.7

  B.8

  C.9

  D.10

  (35)有以下程序

  #include

  #define f(x) x*x*x

  main()

  { int a=3,s,t;

  s=f(a+1);t=f((a+1));

  printf(“%d,%d ’,s,t);

  }

  程序运行后的输出结果是

  A.10,64

  B.10,10

  C.64,10

  D.64,64

  (36)下面结构体的定义语句中,错误的是

  A.struct ord {int x;int y;int z;}; struct ord a;

  B.struct ord {int x;int y;int z;} struct ord a;

  C.struct ord {int x;int y;int z;} a;

  D.struct {int x;int y;int z;} a;

  (37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是

  A.char str[ ]=”string”;c=str;

  B.scanf(“%s”,C.;

  C.c=get);

  D.*c=”string”;

  (38)有以下程序

  #include

  #include

  struct A

  { int a; char b[10]; double c;};

  struct A f(struct A t);

  main()

  { struct A a={1001,”ZhangDa”,1098.0};

  a=f(a);jprintf(“%d,%s,%6.1f ”,a.a,a.b,a.C.;

  }

  struct A f(struct A t)

  ( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )

  程序运行后的输出结果是

  A.1001,ZhangDa,1098.0

  B.1001,ZhangDa,1202.0

  C.1001,ChangRong,1098.0

  D.1001,ChangRong,1202.0

  (39)若有以下程序段

  int r=8;

  printf(“%d ”,r>>1);

  输出结果是

  A.16

  B.8

  C.4

  D.2

  (40)下列关于C语言文件的叙述中正确的是

  A.文件由一系列数据依次排列组成,只能构成二进制文件

  B.文件由结构序列组成,可以构成二进制文件或文本文件

  C.文件由数据序列组成,可以构成二进制文件或文本文件

  D.文件由字符序列组成,其类型只能是文本文件

【3月计算机二级考试《C++》真题】相关文章:

2011年3月计算机二级考试《VFP》真题12-10

2024年9月计算机二级考试Access真题09-26

2011年9月计算机二级考试VB真题03-25

2010年9月计算机等级考试二级Java笔试真题03-26

2009年9月计算机等级考试二级ACCESS笔试真题12-11

2009年9月计算机等级考试二级Java笔试真题12-11

计算机二级考试Java选择真题09-27

2011年3月计算机一级MSOffice考试真题03-03

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