当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年全国计算机等级考试二级C++模拟试题(4)
发布时间:2010/9/8 15:09:30 来源:www.xue.net 编辑:城市总裁吧

  笔试部分

  一、选择题

  1.串的长度是( )

  A.串中不同字符的个数

  B.串中不同字母的个数

  C.串中所含字符的个数且字符个数大于零

  D.串中所含字符的个数

  【参考答案】 D

  2.以下不属于对象的基本特点的是( )

  A.分类性 B.多态性 C.继承性 D.封装性

  【参考答案】 C

  3.下面不属于软件设计原则的是( )

  A.抽象 B.模块化 C.自底向上 D.信息隐蔽

  【参考答案】 C

  4.下列SQL语句中,用于修改表结构的是( )

  A.ALTER B.CREATE C.UPDATE D.INSERT

  【参考答案】 A

  5.关系模型允许定义3类数据约束,下列不属于数据约束的是( )

  A.实体完整性约束 B.参照完整性约束

  C.域完整性约束 D.用户自定义的完整性约束

  【参考答案】 C

  6.非空的循环单链表head的尾结点(由p所指向),满足( )

  A.p->next==NULL B.p==NULL

  C.p->next=head D.p=head

  【参考答案】 C

  7.对建立良好的程序设计风格,下面描述正确的是( )

  A.程序应简单、清晰、可读性好 B.符号名的命名只要符合语法

  C.充分考虑程序的执行效率 D.程序的注释可有可无

  【参考答案】 A

  8.在软件生产过程中,需求信息的给出是( )

  A.程序员 B.项目管理者 C.软件分析设计人员 D.软件用户

  【参考答案】 D

  9.NULL是指( )

  A.0  B.空格  C.未知的值或无任何值 D.空字符串

  【参考答案】 C

  10.下列说法中,不属于数据模型所描述的内容的是( )

  A.数据结构 B.数据操作 C.数据查询 D.数据约束

  【参考答案】 C

  11.C++语言中标点符号中表示一条预处理命令开始的是( )

  A.# B.; C.* D.{

  【参考答案】 A

  12.sizeof(float)是( )

  A.一个双精度型表达式

  B.一个整型表达式

  C.一种函数调用

  D.一个不合法的表达式

  【参考答案】 B

  13.设有程序段

  int k=10;

  while(k=0)k=k-1;

  则下面描述中正确的是( )

  A.循环执行10次 B.无限循环

  C.循环体语句一次也不执行 D.循环体语句执行一次

  【参考答案】 C

  14.以下不正确的定义语句是( )

  A.double x[5]={2.0,4.0,6.0,8.0,10.0};

  B.int y[5]={0,1,3,5,7,9};

  C.char c1[]={′1′,′2′,′3′,′4′,′5′};

  D.char c2[]={′\x10′,′\xa′,′\x8′};

  【参考答案】 B

  15.下列函数的运行结果是( )

  #include

  int f(int a,int b)

  { int c;

  if(a>b) c=1;

  else if(a==b) c=0;

  else c=-1;

  return(c);}

  void main()

  { int i=2,j=3;

  int p=f(i,j);

  cout<

  A.-1 B.1 C.2 D.编译出错,无法运行

  【参考答案】 A

  16.关于静态数据成员的描述中正确的是( )

  A.类的静态数据成员不是类的所有对象共享的数据

  B.类的静态数据成员不能被类的成员函数调用

  C.类的静态数据成员不能被类的构造函数调用

  D.类的静态数据成员必须进行初始化

  【参考答案】 D

  17.下表正确的是( )

  类中的访问属性 访问修饰符 在子类中的访问属性

  A. public private 不能直接访问

  B. protect public public

  C. private public 不能直接访问

  D. protect private protect

  【参考答案】 C

  18.下列运算符中全都可以被友元函数重载的是( )

  A.=,+,-,\ B.[],+,(),new C.->,+,*,>> D.<<,>>,+,*

  【参考答案】 D

  19.对于下面的程序

  ifstream fin(c:\test.txt);

  if(fin)

  cout<<″ok″;

  else

  cout<<″wrong″;

  对于if语句中的内容可以换为( )

  A.fin.fail(); B.fin.bad(); C.fin.good(); D.fin.eof();

  【参考答案】 C

  20.不合法的main函数命令行参数表示形式是( )

  A.main(int a,char *c[])

  B.main(int arc,char **arv)

  C.main(int argc,char *argv)

  D.main(int argv,char *argc[])

  【参考答案】 C

  21.下面叙述不正确的是( )

  A.基类的保护成员在派生类中仍然是保护的成员

  B.基类的保护成员在公有派生类中仍然是保护的

  C.基类的保护成员在私有派生类中仍然是私有的

  D.对基类成员的访问必须是无二义性

  【参考答案】 A

 [NextPage]

  22.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,在划线处填入的选项是( )

  #include

  void main()

  { int a,b,t;

  cin>>a>>b;

  while(________)

  { if(a>b)

  { t=a;a=b;b=t}

   cout<

  cin>>a>>b;

   } }

  A.!a=b B.a!=b C.a==b D.a=b

  【参考答案】 B

  23.C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是( )

  A.增加了一些新的运算符 B.允许函数重载,并允许设置缺省参数

  C.规定函数说明符必须用原型 D.引进了类和对象的概念

  【参考答案】 D

  24.设有定义int x;float y;,则10+x+y值的数据类型是( )

  A.int B.double C.float D.不确定

  【参考答案】 C

  25.下面程序的运行结果为( )

  #include

  void main()

  {

  for(int a=0,x=0;!x&&a<=10;a++)

  {a++;}

  cout<

  }

  A.10 B.11 C.12 D.0

  【参考答案】 C

  26.下面关于数组的初绐化正确的是( )

  A.char str[]={′a′,′b′,′c′}

  B.char str[2]={′a′,′b′,′c′}

  C.char str[2][3]={{′a′,′b′},{′c′,′d′},{′e′,′ f′}}

  D.char str()={′a′,′b′,′c′}

  【参考答案】 A

  27.决定C++语言中函数的返回值类型的是( )

  A.return语句中的表达式类型 B.调用该函数时系统随机产生的类型

  C.调用该函数时的主调用函数类型 D.在定义该函数时所指定的数据类型

  【参考答案】 D

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

  #include

  void print(double a)

  {cout<<++a;}

  void print(int a,int b)

  {cout<

  void main()

  {

  print(1,2);

  cout<<″ ″;

  print(3,4);

  }

  A.1.2 34 B.2.2 34 C.1.2 43 D.2.2 43

  【参考答案】 D

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

  A.友元函数 B.虚函数 C.构造函数 D.析构函数

  【参考答案】 C

  30.下列说法正确的是( )

  A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方

  B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方

  C.类的内联函数必须在类体内定义

  D.类的内联函数必须在类体外通过加关键字inline定义

  【参考答案】 B

  31.下面对于友元函数描述正确的是( )

  A.友元函数的实现必须在类的内部定义

  B.友元函数是类的成员函数

  C.友元函数破坏了类的封装性和隐藏性

  D.友元函数不能访问类的私有成员

  【参考答案】 C

  32.下面程序的运行结果为( )

  #include

  class A

  {public:

  A(){cout<<″1″;}

  ~A(){cout<″2″;}};

  class B:public A

  {public:

  B(){cout<<″3″;}

  ~B(){cout<<″4″;}};

  void main()

  {B b;}

  A.1234 B.1324 C.1342 D.3142

  【参考答案】 C

  33.下列关于多态性的描述,错误的是( )

  A.C++语言中的多态性分为编译时的多态性和运行时的多态性

  B.编译时的多态性可通过函数重载实现

  C.运行时的多态性可通过模板和虚函数实现

  D.实现运行时多态性的机制称为动态绑定

  【参考答案】 C

  34.当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )

  A.ios::in B.ios::out C.ios::in|ios::out D.以上都不对

  【参考答案】 D

 [NextPage]

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

  #include

  class example

  {

  int a;

  public:

  example(int b){a=b++;}

  void print(){a=a+1;cout<

  void print() const{cout<

  };

  void main()

  {

  example x(3);

  const example y(2);

  x.print();

  y.print();

  }

  A.2 2 B.4 3 C.4 2 D.3 2

  【参考答案】 C

  二、填空题

  1.用树结构表示实体类型及实体间联系的数据模型称为【1】。

  【参考答案】

  【1】层次模型

  2.数据流图的类型有【2】和事务型。

  【参考答案】

  【2】变换型

  3.在最坏情况下,堆排序需要比较的次数为【3】。

  【参考答案】

  【3】O(nlog2n)

  4.软件开发环境是全面支持软件开发全过程的【4】集合。

  【参考答案】

  【4】软件工具

  5.冒泡排序算法在最好的情况下的元素交换次数为【5】。

  【参考答案】

  【5】0

  6.C++语言标识符是以字母或【6】开头的,由字母,数字和下划线组成的字符串。

  【参考答案】

  【6】下划线

  7.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回,请填空。

  int mystrlen(char *str)

  { int i;

   for(i=0;【7】!=′\0′;i++);

  return(i);}

  【参考答案】

  【7】*(str+i)或str[i]

  8.如果一个类中定义了成员对象,则该类的对象和成员对象先被初始化的是【8】。

  【参考答案】

  【8】类的成员对象

  9.C++在重载运算符中,如用成员函数重载一元运算符参数表中需要【9】个参数,如用友元函数重载一元运算符参数表中需要【10】个参数。

  【参考答案】

  【9】0 【10】1

  10. 假设int a=1,b=2;,则表达式(++a/b)*b--的值为【11】。

  【参考答案】

  【11】2

  11.C++语句const char *const p=″hello″;,所定义的指针p和它所指的内容都不能被【12】。

  【参考答案】

  【12】改变

  12.对于下面定义的类MyClass,请在函数f()中添加对象成员把n的值修改为50。

  class MyClass

  {

  public:

  MyClass(int x){n=x;}

  void SetNum(int nl){n=nl;}

  private:

  int n;

  };

  int f()

  {

  MyClass *ptr=new MyClass(45);

  【13】

  }

  【参考答案】

  【13】ptr->SetNum(50);

  13.表达式operator+(x,y)还可以表示为【14】。

  【参考答案】

  【14】x+y

  14.通过使用new和delete两个运算符进行的分配为【15】存储分配。

  【参考答案】

  【15】动态

  上机部分

  一、改错题

  使用VC6打开考生文件夹下的工程kt4_1,此工程包含一个源程序文件kt4_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:

  1:

  weight:5

  age:0

  2:

  weight:7

  age:9

  源程序文件kt4_1.cpp清单如下:

  #include

  classanimal

  {

  public:

  /****************found*******************/

  friendvoidsetvalue(animal&,int);

  /****************found*******************/

  viodprint();

  protected:

  intitsweight;

  intitsage;

  };

  voidanimal::print()

  {

  cout<<"weight:"<

  cout<<"age:"<

  }

  voidsetvalue(animal&ta,inttw)

  {

  ta.itsweight=tw;

  ta.itsage=0;

  }

[NextPage]

  voidsetvalue(animal&ta,inttw,inttn)

  {

  ta.itsweight=tw;

  ta.itsage=tn;

  }

  voidmain()

  {/****************found*******************/

  animalpeppy

  setvalue(peppy,5);

  cout<<"1:"<

  peppy.print();

  setvalue(peppy,7,9);

  cout<<"2:"<

  peppy.print();}

  【参考答案】

  (1)添加友元函数的声明

  friend void setvalue(animal&,int,int);

  (2)将viod print();改为:void print();

  (3)将animal peppy改为:animal peppy;

  【试题解析】

  (1)主要考查对成员函数定义规则的掌握,成员函数必须先声明再使用,即使是友元函数也不例外;

  (2)主要考查对关键字的掌握,空类型应用void;

  (3)主要考查对变量定义的掌握,该处缺少“;”。

  二、简单应用题

  请编写一个函数intSeqSearch(intlist[],intstart,intn,intkey),该函数从start开始,在大小为n的数组list中查找key值,返回最先找到的key值的位置,如果没有找到则返回-1。请使用for循环实现。

  注意:部分源程序已存在文件kt4_2.cpp中。

  请勿修改主函数main和其他函数中的任何内容,仅在函数SeqSearch的花括号中填写若干语句。

  文件kt4_2.cpp的内容如下:

  #include

  intSeqSearch(intlist[],intstart,intn,intkey)

  {

  }

  voidmain()

  {

  intA[10];

  intkey,count=0,pos;

  cout<<"Enteralistof10integers:";

  for(pos=0;pos<10;pos++)

  {

  cin>>A[pos];

  }

  cout<<"Enterakey:";

  cin>>key;

  pos=0;

  while((pos=SeqSearch(A,pos,10,key))!=-1)

  {

  count++;

  pos++;

  }

  cout<

  }

  【参考答案】

  int SeqSearch(int list[], int start, int n, int key)

  {

  for(int i=start;i

  {

  if(list[i]==key)

  {

  return i;

  }

  }

  return -1;

  }

  【试题解析】

  本题考查的是考生使用for和if等基本控制结构的综合水平,查找一个数组中的指定元素并返回序号是一个基本操作,注意一维数组的实参格式。

  三、综合应用题

  使用VC6打开考生文件夹下的工程kt4_3,此工程包含一个源程序文件kt4_3.cpp,其中定义了用于表示向量的类vector,但类vector的定义并不完整。请按要求完成下列操作,将类vector的定义补充完整。

  (1)补充类vector的构造函数,该函数有参数x和y,它们都是int型的数据,默认值都为0。请使用参数列表的形式分别将类的数据成员a和b分别初始化为参数x和y的值。请在注释“//**1**”之后添加适当的语句。

  (2)完成类vector的成员函数input(intx,inty)的定义,将int型的参数x和y分别赋值给数据成员a和b,请在注释“//**2**”之后添加适当的语句。

  (3)完成类vector的友元函数frienddoubleMultiply(vector&x,vector&y)的定义,先定义double型的临时变量c,然后将参数对象x和对象y的数据成员a与b分别相乘再相加后赋值给c,最后返回c的值,将请在注释“//**3**”之后添加适当的语句。输出结果如下:

  (10,20)

  (2,3)

  80

  注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

  源程序如下:

  #include

  classvector

  {

  inta;

  intb;

  public:

  //**1**

  voidinput(intx,inty)

  {//**2**}

  voidoutput()

  {cout<<'('<

  frienddoubleMultiply(vector&x,vector&y);

  };

  doubleMultiply(vector&x,vector&y)

  {

  //**3**

  c=x.a*y.a+x.b*y.b;

  returnc;

  }

  voidmain()

  {

  vectorx(10,20),y;

  doubled;

  y.input(2,3);

  d=Multiply(x,y);

  x.output();

  y.output();

  cout<

  }

  【参考答案】

  (1)vector (int x=0,int y=0):a(x),b(y){}

  (2)a=x; b=y;

  (3)double c;

  【试题解析】

  本题主要考查类的定义和友元函数定义,其中(1)中的参数列表形式和(3)中对象访问成员使用“.”操作符。

 

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved