2017年全国计算机等级考试二级C++模拟试题(19)

日期:03-01| http://www.59wj.com |二级C++模拟试题|人气:927

2017年全国计算机等级考试二级C++模拟试题(19)

  笔试部分

  一、选择题

  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
  .
       
               www.59wj.com

  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
  .
       
               www.59wj.com

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

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

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

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

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

  【参考答案】 A

  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
  .
       
               www.59wj.com

  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

  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
  .
       
               www.59wj.com

  二、填空题

  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】。

  【参考答案】
  .
       
               www.59wj.com

  【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】动态
  .
       
               www.59wj.com

  上机部分

  一、改错题

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

  Thisisstatica:1

  Thisisnon-staticb:1

  Thisisstatica:2

  Thisisnon-staticb:2

  Thisisstatica:2

  Thisisnon-staticb:1

  Pressanykeytocontinue

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

  #include

  classshared

  { staticinta;

  intb;

  public:

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

  voidset(inti=0,intj){a=i;b=j;}

  voidshow(); };

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

  voidshared::show()

  { cout<<"Thisisstatica:"<

  cout<<"\nThisisnon-staticb:"<

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

  cout>>"\n"; }

  voidmain()

  { sharedx,y;

  x.set(1,1);

  x.show();

  y.set(2,2);

  y.show();

  x.show(); }

  【参考答案】

  (1)将void set(int i=0, int j) {a=i; b=j;}

  改为:void set(int i, int j) {a=i; b=j;}

  (2)缺少对静态成员的初始化,应为:int shared::a;

  (3)将cout >> "\n"; 改为: cout << "\n";

  【试题解析】

  (1)主要考查对类的参数初始化的理解,类的成员函数的参数在函数声明中不能进行初始化,只能在函数体内部进行,这是C++的规定;

  (2)主要考查静态成员的定义,静态成员是该类共有的数据成员,所有该类的对象共同拥有,它必须在类的内部声明,类的外部进行初始化之后才能使用;

  (3)主要考查对输出流语句的掌握,“>>”运算符是C++的iostream类重载输出符号,而“<<”运算符是C++的iostream类重载输入符号。
  .
       
               www.59wj.com

  二、简单应用题

  请编写函数fun(),该函数的功能是将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。

  例如:二维数组中的数据为

  33333333

  44444444

  55555555

  则一维数组中的内容应是

  334455334455334455334455。

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

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

  文件kt19_2.cpp的内容如下:

  #include

  #include

  voidfun(int(*s)[10],int*b,int*n,intmm,intnn)

  {

  }

  voidmain()

  { intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;

  inta[100]={0},n=0;

  cout<<"Thematrix:\n";

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

  { for(j=0;j<4;j++)

  cout<

  cout<

  fun(w,a,&n,3,4);

  cout<<"TheAarray:\n";

  for(i=0;i

  cout<

  cout<<"\n\n"; }

  【参考答案】

  void fun(int(*s)[10],int *b,int *n,int mm,int nn)

  { int i,j;

  for(j=0;j

  for(i=0;i

  { b[*n]=*(*(s+i)+j);*n=*n+1; } }

  【试题解析】

  一个二维数组的存储可以理解为按行进行存储的一个一维数组,但本题中的二维数组要求按列进行存储。根据在主函数中的调用情况,可以看出,指针数组s[10]实质上是用来存放二维数组中各行的首地址,b是用来存放最终二维数组按列处理完毕后的一个一维数组,第3个参数之所以要用"&n",目的是为了能在函数中直接改变其值。
  .
       
               www.59wj.com

  三、综合应用题

  使用VC6打开考生文件夹下的工程kt19_3。此工程包含一个kt19_3.cpp,其中定义了类ARRAY和其派生类STUDENT,其中类ARRAY是一个多态数组,该数组可以存放学校中的各类人员,如学生等,但它们的定义并不完整。请按要求完成下列操作,将程序补充完整。

  (1)定义类ARRAY的三个公有成员纯虚函数add(inta)、del(intd)和show(ints),它们的返回值类型都是void型的。请在注释“//**1**”之后添加适当的语句。

  (2)添加派生类STUDENT的保护数据成员float型的二维数组table,使其有row行和s_col列,请在注释“//**2**”之后添加适当的语句。

  (3)完成派生类STUDENT的成员函数del(ints)的定义,实现把二维数组第s行删除的功能,即把该行清零,请在注释“//**3**”之后添加适当的语句。

  (4)完成派生类STUDENT的成员函数show(ints)的定义,使其以格式“跳格table[行号][列号]is_换行”依次输出s行的各个元素,请在注释“//**4**”之后添加适当的语句。

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

  #include

  #include

  constintrow=100;

  constints_col=3;

  classARRAY

  { public:

  //**1** };

  classSTUDENT:publicARRAY

  { public:

  virtualvoidadd(ints)

  { cout<<"\tInputdataofSTUDENT."<

  cout<<"\tFirst:";

  cin>>table[s][0];

  cout<<"\tSecond:";

  cin>>table[s][1];

  cout<<"\tThird:";

  cin>>table[s][2]; }

  virtualvoiddel(int s);

  virtualvoidshow(int s);

  protected:
  .
       
               www.59wj.com

  int i;

  //**2** };

  voidSTUDENT::del(int s)

  { //**3** }

  voidSTUDENT::show(int s)

  { cout<

  for(i=0;i<=s_col-1;i++)

  { //**4** } }

  intmain()

  { STUDENTst;

  ARRAY*ap;

  ap=&st;

  ap->add(3);

  ap->show(3);

  ap->del(3);

  ap->show(3);

  return0; }

  【参考答案】

  (1)virtual void add(int a) = 0;

  (2)float table[row][s_col];

  (3)for(i=0;i<=s_col-1;i++)

  table[s][i] = 0;

  (4)cout<<"\ttable["<

  .
       
               www.59wj.com 如果觉得《2017年全国计算机等级考试二级C++模拟试题(19)》二级C++模拟试题,jsj不错,可以推荐给好友哦。
本文Tags: 计算机等级考试 - 模拟试题 - 计算机二级模拟试题 - 二级C++模拟试题,jsj,
在百度中搜索相关文章:2017年全国计算机等级考试二级C++模拟试题(19)
在谷歌中搜索相关文章:2017年全国计算机等级考试二级C++模拟试题(19)
在soso中搜索相关文章:2017年全国计算机等级考试二级C++模拟试题(19)
在搜狗中搜索相关文章:2017年全国计算机等级考试二级C++模拟试题(19)
相关分类导航|
热门推荐|