试题

上半年全国计算机二级C++考试真题

时间:2024-03-21 09:51:05 试题 我要投稿
  • 相关推荐

上半年全国计算机二级C++考试真题

  一、选择题

上半年全国计算机二级C++考试真题

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

  A)栈是“先进先出”的线性表

  B)队列是“先进后出”的线性表

  C)循环队列是非线性结构

  D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构

  (2)支持子程序调用的数据结构是

  A)栈

  B)树

  C)队列

  D)二叉树

  (3)某二叉树有5个度为z的结点,则该二叉树中的叶子结点数是

  A)10

  B)8

  C)6

  D)4

  (4)下列排序方法中,最坏情况下比较次数最少的是

  A)冒泡排序

  B)简单选择排序

  C)直接插入排序

  D)堆排序

  (5)软件按功能可以分为: 应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是

  A)编译程序

  B)操作系统

  C)教务管理系统

  D)汇编程序

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

  A)软件测试的目的是发现错误并改正错误

  B)对被调试的程序进行“错误定位”是程序调试的必要步骤

  C)程序调试通常也称为Debug

  D)软件测试应严格执行测试计划,排除测试的随意性

  (7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是

  A)提高耦合性降低内聚性有利他哦高模块的独立性

  B)降低耦合性提高内聚性有利于提高模块的独立性

  C)耦合性是指一个模块内部各个元索间彼此结合的紧密程度

  D)内聚性是指模块间互相连接的紧密程度

  (8)数据库应用系统中的核心问题是

  A)数据库设计

  B)数据库系统设计

  C)数据库维护

  D)数据库管理员培训

  (9)有如下程序:

  #include

  using namespace std;

  class ONE{

  int c;

  public:

  ONE():c(0){cout<<1;}

  ONE(int n):c (n){cout<<2;}

  };

  class TWO{

  ONE onel;

  ONE one2;

  public:

  TWO(int m):one2(m){cout<<3;}

  };

  int main()t

  TWO t(4)

  return 0

  }

  运行时的输出结果是

  A)3

  B)23

  C)123

  D)213

  (10)将E-R图转换为关系模式时,实体和联系都可以表示为

  A)属性

  B)键

  C)关系

  D)域

  (11)对C++编译器区分重载函数无任何意义的信息是

  A)参数类型

  B)参数个数

  C)返回值类型

  D)常成员函数关键字coast

  (12)有如下类定义和变量定义:

  class A{

  publie:

  A(){data=0;}

  ~A(){}

  int GetData ( ) coast { return data;}

  void SetData(int n) {data=n;}

  private:

  int data;

  };

  ccnst A a;

  A b;

  下列函数调用中错误的是

  A)a .GetData();

  B)a .SetData(10);

  C)b .GetData();

  D)b .SetData(10);

  (13)有如下类定义和变量定义:

  class Parents{

  public:

  int publicuata;

  private:

  int privateData;

  };

  class ChildA:public Parents{/*类体略*/};

  class ChildB:private Parents{/*类体略*/);

  ChildA a;

  ChildBb;

  下列语句中正确的是

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

  (14)运算符重载时不需要保持的性质是

  A)操作数个数

  B)操作数类型

  C)优先级

  D)结合性

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

  A)从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准

  B)对于常规参数所对应的模板实参,任何情况下都不能省略

  C)虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参

  D)模板参数表不能为空

  (16)要建立文件流并打开当前目录下的文件file.dat用于输入,下列语句中错误的是

  A)ifstream fin=ifstream.open(“file.dat”);

  B)ifstream*fir.=new ifstream(“file.dat”);

  C)ifstream fin; fin.open(“file.dat”);

  D)ifstream *fin=new ifstream( );fin一>open(“file.dat”);

  (17)下列描述中,不属于面向对象思想主要特征的是

  A)封装性

  B)跨平台性

  C)继承性

  D)多态性

  (18)有如下程序段:

  Tnt i=4;int j=l;

  int main(){

  int i=8,j=i;

  cout< }

  运行时的输出结果是

  A)44

  B)41

  C)88

  D)81

  (19)有如下程序段:

  int i=5;

  while(int i=0){cout《'*';i--;}

  运行时输出“*”的个数是

  A)0

  B)1

  C)5

  D)无穷

  (20)己知有数组定义

  char a[3][4];

  下列表达式中错误的是

  A)a[2]=“WIN”

  B)strcpy(a[2],“WIN”)

  C)a [2][3]='W'

  D)a[0][1]=a[0][1]

  (21)已知函数fun的原型为

  int fun(int,int,int);

  下列重载函数原型中错误的是

  A)char fun(int,int);

  B)double fun(int,int,double);

  C)int fun(int,char*);

  D)float fun (int, int, int);

  (22)建立一个类对象时,系统自动调用

  A)析构函数

  B)构造函数

  C)静态函数

  D)友元函数

  (23)通过派生类的对象可直接访问其

  A)公有继承基类的公有成员

  B)公有继承基类的私有成员

  C)私有继承基类的公有成员

  D)私有继承基类的私有成员

  (24)己知表达式++a中的“++”是作为成员函数重载的运算符,则与十+a等效的运算符函数调用形式为

  A)a .orerator++(1)

  B)operator++(a)

  C)operator++(a,l)

  D)a.operator++( )

  (25)在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是

  A)( )

  B)[ ]

  C)< >

  D){ }

  (26)当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为

  A)ios_base::in

  B)ios_base::in|ios_base::out

  C)ios_base::out

  D)ios_base::in&ios_base::out

  (27)有如下程序:

  #include

  #include

  using namespace std;

  class XCD{

  char* a;

  int b;

  public:

  XCD(char* aa, int bb){

  a=new char[strlen(aa)+1];

  strcpty(a,aa);

  b=bb;

  }

  Char* Geta (){return a;)

  int Getb(){ return b;}

  };

  int main(){

  char *pl=“abcd”,*p2=“weirong”;

  int dl=6, d2=8;

  XCD x(pl,dl),Y(p2,d2);

  cout< return 0;

  }

  运行时的输出结果是

  A)12

  B)16

  C)14

  D)11

  (28)有如下程序:

  #include

  #include

  using namespace std;

  class XCF{

  int a;

  public:

  XCF(int aa=0):a (aa){cout<<“1”;}

  XCF(XCF& x){a=x .a; cout<<“2”;)

  ~XCF(){cout< int Geta(){return a;}

  };

  int main(){

  XCF dl(5),d7 (dl);

  XCF *pd=new XCF(8);

  cout

  delete pd;

  return 0;

  }

  运行时的输出结果是

  A)121SS88

  B)12188SS

  C)12185

  D)128512

  (29)已知类MyClass声明如下:

  class MyClass{

  int n;

  public;

  MyClass(int k):n(k){}

  int getValue()const{return n;}

  };

  在下列数组定义中正确的是

  A)MyClass x1[2];

  B)MyClass x2[2]={new MyClass(1),new MyClass(2)};

  C)MyClass *x3[2];

  D)MyClass *x4[2]={MyClass(1),MyClass(2)};

  (30)有如下程序:

  #include

  using namespace std;

  class AA{

  lilt k;

  protected:

  int n;

  void setK(int k){ this->k=k;}

  public:

  void setN(int n){ this->n=n;}

  };

  class BB: public }{/*类体略*/};

  int main(){

  BB x_ ; //1

  x .n=1; //2

  x.setN (2); //3

  x.k=3; //4

  x .setK(4);

  return 0;

  }

  在标注号码的四条语句中正确的是

  A)1

  B)2

  C)3

  D)4

  (31)有如下类定义:

  class XX{

  int xx;

  public:

  XX():xx(0){cout<<' A';}

  XX(int n):xx ( n){tout<<' B';}

  };

  Class YY:public XX{

  Int yy;

  public:

  YY():yy ( 0){cout+yy;}

  YY(int n):XX(n+1),yy(n){cout< YY (int m, int n):XX (m),yy(n){cout< };

  下列选项中,输出结果为A0的语句是

  A)YY y1(0,0);

  B)YY y2(1);

  C)YY y3(0);

  D)YY y4;

  (32)有如下程序:

  #include

  Using namespace std;

  class A{

  public:

  virtual void f(){cout+1;}

  void g(){cout<<2;}

  };

  class B:public A{

  public:

  virtual void f(){cout<<3;}

  void g(){ecut<<4;}

  };

  void show(A &a){a.f();a.g( );}

  int main(){

  B b;

  show(b);

  return 0;

  }

  运行时的输出结果是

  A)12

  B)34

  C)14

  D)32

  (33)有如下程序:

  #include

  using namespace std;

  class Pair{

  int m;

  int n;

  public:

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

  boot operator >(pair p)const; //须在类体外给出定义

  };

  int main(){

  Pair Al(3,4),p2(4,3);p3(4,5);

  Cout<<(pl>p2)<<(p2>P1)<<(p2>p3)<<(p3>p2);

  return 0;

  }

  运算符函数。operator>的功能是比较两个Pair对象的大小,当左边对象大时,返回true,否则返回false。比较规则是首先比较两对象的m成员,m大者为大;当m相等时比较n,n大者为大。程序输出0101,下列对运算符重载函数的正确定义是

  A)bool Pair::operator>(Pair p)const

  {if (m!=p.m) return m>p.m; return n>p.n;}

  B)bool Pair:;operator>(Pair p)

  {if (m!=p.m) return m>p.m; return n>p.n;}

  C)bool Pair::operator>(Pair p)const

  {if (m>p.m) return true; return n>p.n;}

  D)bool Pair:;operator>(Pair p)

  {if (m>p.m) return true; return n>p.n;}

  (34)假定下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外三条语句不同的语句是

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

  二、填空题

  (1)假设用一个长度为50的数组(数组元索的下标从0到49)作为栈的存化空间,栈底指针bottom指间栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有【1】个元素。

  (2)软件测试可分为白盒测试和黑盒测试。基本路径测试属于【2】测试。

  (3)符合结构化原则的三种基本控制结构是:选择结构、循环结构和【3】。

  (4)数据库系统的核心是【4】。

  (5)在E-K图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是【5】框。

  (6)有如下程序段:

  int x=1,Y=2,z=3;

  x=x^z;

  y=y^z;

  z=x^y;

  cout< 执行这个程序段的输出是【6】。

  (7)有如下程序段:

  fer(int i=1; i<=50;i++){

  if(i%3 != 0)

  continue;

  else

  if(i%5!=0)

  continue;

  tout< }

  执行这个程序段的输出是【7】。

  (8)有如下程序段:

  Char c [20]=“examination”;

  c[4]=0;

  cout< 执行这个程序段的输出是【8】。

  (9)下面的函数利用递归实现了求1+2+3+……+n的功能:

  int sum(int n){

  if(n==0)

  return 0;

  else

  return n+sum(n-1);

  }

  在执行sum(10)的过程中,递归调用sum函数的次数是【9】。

  (10)非成员函数应该声明为类【10】函数才能访问该类的私有成员。

  (11)有如下程序:

  #include

  using namespace std;

  class Monitor{

  public:

  Monitor(char t):type (t){}

  void print( ) const

  {cout<<“The type of monitor is”< private:

  char type;

  };

  class Computer{

  public:

  Computer(int i,char c): 【11】{}

  void Print()const

  {cout<<“The computer is”< private:

  int id;

  Monitor mon;

  };

  const Computer myComputer(101,'B‘);

  myComputer .Print();

  return 0;

  }

  请将程序补充完整,使程序在运行时输出:

  The computer is 101

  'The type of monitor i.s 8

  (12)有如下程序:

  #include

  using namespace std

  class Animal{

  public:

  virtual char* getType()const { return “Animal”;}

  virtual char* getVoice()const { return “Voice”;}

  };

  Class Dog : public Animal {

  public:

  char* getType ( ) const {return “Dog”;}

  char* getVoice ( ) const {return “Woof”}

  };

  void type(Animal& a) {cout< void speak(Animal a) {cout< int main( ) {

  Dog d; type (d);cout<<“ speak”;speak(d);cout< return 0;

  }

  运行时的输出结果是【12】。

  (13)补充完整下面的类定义:

  const double PI=3 .14;

  class Circle{ //圆形物体的抽象基类

  protected:

  double r; //半径

  public:

  Circle(double radius=0):r(radius){}

  【13】;//计算圆形物体表面积的纯虚函数声明

  };

  class Cylinder:public Circle { //圆柱体类

  double h; //高度

  public:

  Cylindr(double radius=0, doubli height=0):

  Circle(radius),h (height){}

  Virtual double Area() { //计算圆柱体的表面积

  return 2*PI*r*(r+h);

  }

  };

  (14)补充完整下面的类定义:

  class XCH{

  char* a;

  public:

  XCH(char* as) { //构造函数

  a=new char[strlen(aa)+1];

  strcpy(a,aa);

  }

  XCH& operator=(const XCH& x) //重载赋值函数

  Delele []a;

  A=new char[strlen(x.a)+l];

  strcpy(a, x .a)

  【14】;

  }

  ~XCH() {delete []a;}

  };

  (15)补充完整下面的模板定义:

  template //Type为类型参数

  class Xtwo{ //由两个Type类型的数据成员构成的模板类

  Type a;

  Type b;

  public:

  Xtwe(Type aa=0, Type bb=0):a(aa),b(bb){}

  int Ccmpare (){//比较a和b的大小

  if (a>b)returm 1;

  else if(a==b) return 0;

  else return -1;

  }

  Type Snm() {return a+b;} //返回a和b之和

  Type Mult(); //函数声明,返回a和b之乘积

  };

  Template

  【15】::Mult(){return a*b;} //Mult 函数的类外定义

【上半年全国计算机二级C++考试真题】相关文章:

全国计算机二级考试C++真题03-21

全国计算机二级考试《C语言》真题练习及答案09-20

全国计算机二级考试《C++》笔试样卷06-12

2024年3月全国计算机二级考试VFP真题11-01

2022年全国计算机二级C++考试强化练习11-07

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

全国计算机二级《C++》上机试题及答案03-28

全国计算机等级二级考试java选择题练习04-18

2023下半年全国计算机二级C++考试模拟题及答案08-22