计算机等级 > 二级考试 > C++语言程序设计 > C++模拟试题 > 文章内容

全国计算机二级考试C++考前押密试卷(1)

2017-8-9编辑:daibenhua

  一、选择题(每小题1分,共40小题,共40分)

  1.下列选项中不符合良好程序设计风格的是(  )。

  A.源程序要文档化

  B.数据说明的次序要规范化

  C.避免滥用goto语句

  D.模块设计要保证高耦合、高内聚

  2.有下列二叉树,对此二叉树中序遍历的结果是(  )。

  

  A.ABCDEF

  B.BDAECF

  C.ABDCEF

  D.ABCDFE

  3.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是(  )。

  A.冒泡排序为n/2

  B.冒泡排序为n

  C.快速排序为n

  D.快速排序为n(n-1)/2

  4.为了使模块尽可能独立,要求(  )。

  A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强

  B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱

  C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱

  D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强

  5.在软件设计中,不属于过程设计工具的是(  )。

  A.PDL(过程设计语言)

  B.PAD图

  C.N-S图

  D.DVD图

  6.下列工具中为需求分析常用工具的是(  )。

  A.PAD

  B.PFD

  C.N-S

  D.D.DFD

  7.下列是软件调试技术的是(  )。

  A.错误推断

  B.集成测试

  C.回溯法

  D.边界值分析

  8.两个或两个以上模块之问联系的紧密程度称为(  )。

  A.耦合性

  B.内聚性

  C.复杂性

  D.数据传输特性

  9.实体是信息世界中广泛使用的一个术语,它用于表示(  )。

  A.有生命的事物

  B.无生命的事物

  C.实际存在的事物

  D.一切事物

  10.数据库系统的核心是(  )。

  A.数据模型

  B.数据库管理系统

  C.数据库

  D.数据库管理员

  11.下面关于虚函数的描述中正确的是(  )。

  A.虚函数是一个静态成员函数

  B.虚函数是一个非成员函数

  C.虚函数可以在函数说明时定义,也可以在函数实现时定义

  D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型

  12.以下for语句中不是死循环的是(  )。

  A.for(inti=0;i<1;++i);

  B.for(inti=0;;++i);

  C.for(inti=1;i>0;++i);

  D.for(;;);

  13.执行下列语句序列:

  inti=0;while(i<25)i+=3;cout<  输出结果是(  )。

  A.24

  B.25

  C.27

  D.28

  14.C++语言中在C语言的基础上增加的特性不包括(  )。

  A.结构

  B.引用

  C.类和对象

  D.静态成员函数

  15.有如下函数模板声明:

  template

  TMax(Ta,Tb){return(a>=b)?a.b;}

  下列对函数模板Max(  )的调用中错误的是(  )。

  A.Max(3.5,4.5)

  B.Max(3.5,4)

  C.Max(3.5,4.5)

  D.Max(3.5,4)

  16.已知在一个类体中包含如下函数原型:VOLUMEOPERATOR-(VOLUME)const;,下列关于这个函数的叙述中,错误的是(  )。

  A.这是运算符一的重载运算符函数

  B.这个函数所重载的运算符是一个一元运算符

  C.这是一个成员函数

  D.这个函数不改变类的任何数据成员的值

  17.下面说法正确的是(  )。

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

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

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

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

  18.静态成员函数没有(  )。

  A.返回值

  B.this指针

  C.指针参数

  D.返回类型

  19.执行下列语句后,输出结果为(  )。

  cout.put(’S’);

  cout<<’C’<<’a’;

  A.ca

  B.sca

  C.S

  D.a

  20.下面程序的执行结果是(  )。

  #include"iostream.h"

  voidmain()

  {int*P,r;

  P=newint:

  *P=20:

  r=sizeof(*p);

  cout<  deleteP;}

  A.程序错误

  B.内存为20地址的大小

  C.20

  D.4

  21.C++语言中关于构造函数的说法正确的是(  )。

  A.构造函数的函数名不必和类名相同

  B.构造函数只能有一个

  C.每个类必定有构造函数

  D.构造函数必有返回值

  22.(  )既可重载为一元运算符,又可重载为二元运算符。

  A.“*”B.“=”

  C.“=”和“*”D.“*”和“*++”

  23.类MyClass的定义如下:

  classMvClass

  {

  public:

  MyClass(){value=0;}

  SetVariable(inti){value=i;}

  private:

  intvalue;

  };

  则对下列语句序列正确的描述是(  )。

  A.语句p=&my;是把对象my赋值给指针变量P

  B.语句MyClass*P,my;会调用两次类MyClass的构造函数

  C.对语句*P.SetVariable(5)的调用是正确的

  D.语句p->SetVariable(5)与语句my.SetVariable(5)等价

  24.有如下程序:

  #included

  usingnamespacestd;

  classTestClass

  {private:

  intX,y;

  public:

  TestClass(inti,intj)

  {x=i;

  y=j;}

  voidprint()

  {cout<<"printl"<  voidprint()const

  {cout<<"print2"<  intmain()

  {constTestClassa(1,2);

  a.print();

  return0;}

  该程序运行后的输出结果是(  )。

  A.printl

  B.print2

  C.printlprint2

  D.程序编译时出错

  25.有如下程序:

  #included

  usingnamespacestd;

  classTestClass

  {inta;

  pubIic:

  TestClass(intx){a=x;}

  voidshow(){cout<  classTestClassl:publicTestClass

  {intb;

  public:

  TestClassl(inti):TestClass(i+1),b(i){}

  voidshow(){cout<  intmain()

  {TestClassb(5),*P;

  TestClassld(1):

  p=&d;

  p->show();

  return0;}

  该程序运行后的打印结果是(  )。

  A.5

  B.1

  C.0

  D.2

  26.下面程序输出的结果为(  )。

  #include"iostream.h"

  classA

  {public:

  A(){cOUt<<"CLASSA"<  ~A(){}};

  ClaSSB:publicA

  {public:

  B(){cout<<"CLASSB"<  ~B(){}};

  voidmain()

  {A*P;

  P=newB:

  B*q:

  q=newB;}

  A.CLASSA

  B.CLASSA

  CLASSBCLASSB

  CLASSB

  C.CLASSA

  D.CLASSA

  CLASSBCLASSB

  CLASSACLASSB

  CLASSBCLASSB

  27.在下面的运算符重载函数的原型中,错误的是(  )。

  A.Volumeoperator-(double,double);

  B.doubleVolume::operator-(double);

  C.VolumeVolume::operator-(Volume);

  D.Volumeoperator-(Volume);

  28.有如下类声明:

  classXA{

  intx:

  public:

  XA(intn){x=n;}

  };

  classXB:publicXA{

  inty;

  oublic:

  XB(inta,intb);

  };

  在构造函数XB的下列定义中,正确的是(  )。

  A.XB::XB(inta,intb):x(a),y(b){}

  B.XB::XB(inta,intb):XA(a),y(b){}

  C.XB::XB(inta,intb):x(a),XB(b){}

  D.XB::XB(inta,intb):XA(a),XB(b){}

  29.下面类的定义,有(  )处错误。

  classMyClass

  {public:

  voidMyClass();

  ~MyClass(intvahle);

  private:

  inti=0;};

  A.1B.2

  C.3D.4

  30.有以下程序:

  classDate

  {public:

  Date(inty,intm,intd);

  {year=Y;

  month=m;

  day=d;}

  Date(inty=2000)

  {year=y;

  month=10;

  day=1;}

  Date(Date&d)

  {year=d.year;

  month=d.month;

  day=d.day;}

  voidprint()

  {cout<  day<  private:

  intyear,month,day;};

  Datefun(Dated)

  {Datetemp;

  temp=d;

  returntemp;}

  intmain()

  {Datedatel(2000,1,1),date2(0,0,O);

  Datedate3(date1);

  date2=fun(date3);

  return0;}

  程序执行时,Date类的复制构造函数被调用的次数是(  )。

  A.2

  B.3

  C.4

  D.5

  31.下列表示纯虚函数的成员函数是(  )。

  A.virtualintfunc(int);B.voidfunc(int)=0;

  C.virtualvoidfunc=0;D.virtualvoidrune(int){}

  32.若有以下程序:

  #include

  usillgnamespacestd;

  classA

  {private:

  inta;

  public:

  A(inti)

  {a=i;}

  voiddisp()

  {cout<  classB

  {private:

  intb;

  public:

  B(intj)

  {b=j;}

  voiddisp()

  {COUt<  classC:publicB,publicA

  {private:

  intC;

  public:

  C(intk):A(k-2),B(k+2)

  (c=k;)

  voiddisp()

  {A::disp();

  B::disp();

  cout<  intmain()

  {Cobj(10);

  obj.disp();

  return0;}

  程序执行后的输出结果是(  )。

  A.10,10,10

  B.10,12,14

  C.8,10,12

  D.8,12,10

  33.下列表达式的值为false的是(  )。

  A.1<3&&5<7B.!(2>4)

  C.3&0&&lD.!(5<8)‖(2<8)

  34.所有在函数中定义的变量及函数的形式参数,都属于(  )。

  A.全局变量

  B.局部变量

  C.静态变量

  D.常量

  35.有以下程序:

  #include

  usingnamespacestd;

  classR

  {public:

  R(intr1,intr2)

  {R1=r1;

  R2=r2;}

  voidprint();

  voidprint()const;

  private:

  intR1,R2;};

  voidR::print()

  {cout<  voidR::print()const

  {cout<  intmain()

  {Ra(5,4);

  constRb(20,52);

  b.print();

  return0;}

  执行后的输出结果是(  )。

  A.5,4

  B.20,52

  C.0,0

  D.4,5

  36.下列程序的执行结果是(  )。

  #include

  #include

  classTestClass

  {

  public:

  intX,y;

  TestClass(){x=y=0;}

  TestClass(inta,intb)(x=a;y=b;}voiddisp()

  {

  cout<<"x="<  C.chars[10];s="BOOK";

  D.char*S;s="BOOK!";

  38.有下列程序:

  #include

  intfun(intx,inyy)

  {if(x==y)return(x);

  elsereturn((x+y)/2);

  }

  voidmain()

  {inta=4,b=5,C=6;

  printf("%d\n",fun(2*a,fun(b,c)));

  }

  程序运行后的输出结果是()。

  A.3

  B.6

  C.8

  D.12

  39.设函数中有整型变量n,为保证其在未赋初值的情况下初值为0,应选择存储类别是(  )。

  A.auto

  B.register

  C.static

  D.auto或register

  40.有下列程序:

  #include

  intb=2:

  intfun(int*k)

  {b=*k+b;return(b);}

  voidmain()

  {inta[1O]={1,2,3,4,5,6,7,8},i;

  for(i=2;i<4;i++){b=fun(&a[i])+b;printf

  ("%d",b);}

  printf("\n");

  }

  程序运行后的输出结果是(  )。

  A.1012

  B.810

  C.1028

  D.1016

  二、程序改错题(18分)

  使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错。请改正程序中的错误,使程序输出的结果为

  100

  37

  32

  注意:错误的语句在//******error******的下面,修改该语句即可。

  试题程序:

  #include

  //******error******

  voidmain

  {

  //******error******

  intm=0142:

  //******error******

  intn=0X27:

  intq=32;

  cout<  cout<  cout<  return;

  }

  三、简单应用题(24分)

  使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。函数DecToBin(char*des,intn)的功能是将十进制数据n转换成二进制数据,并将转换结果存放在des中。

  例如:58的二进制数据为111010,则

  DecToBin(char*des,58);

  cout<  输出结果为:111010

  注意:不能修改程序的其他部分,只能补充DecToBin(char*des,intn)函数。

  试题程序:

  #include

  #defineMAXLEN1024

  voidDecToBin(char*des,intn)

  {

  }

  voidmain()

  {

  chardes[MAXLEN];

  intn=58:

  DecToBin(des,n);

  cout<  return;

  }

  四、综合应用题(18分)

  使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示雇员的Employee类,但类Em-ployee的定义并不完整。请按要求完成下列操作,将类TC的定义补充完整。

  (1)定义私有数据成员name、street、city、zipcode和age分别用于表示姓名、街道、城市、邮编、年龄,除年龄是整型外,其余都是char型的数据。请在注释1之后添加适当的语句。

  (2)完成默认构造函数TC的定义,使其把参数传递给私有数据成员name、streel、city、zipcode和age。请在注释2之后添加适当的语句。

  (3)完成成员函数aherName(char*newName)的定义。请在注释3之后添加适当的语句。

  (4)完成成员函数IsEqual(char*ename)的定义,实现当name相等时返回真,否则返回假的功能。请在注释4之后添加适当的语句。

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

  试题程序:

  #include

  #include  #defineMAXLEN20

  classTC

  {

  private:

  //********、********

  intage;

  public:

  TC(char*newName,char*newStreet,char*

  newCt,char*newZp,intnewAge);

  voidalterName(char*newName);

  voiddisplay();

  boolIsEqual(char*ename);

  };

  TC::TC(char*newName,char*newStreet,char*

  newCt,char*newZp,intnewAge)

  {

  //********2********

  age=newAge;

  }

  voidTC::alterName(char*newName)

  {

  //********3********

  }

  boolTC::IsEqual(char*ename)

  {

  //********4********

  }

  voidTC::display()

  {

  cout<  cout<  }

  voidmain(void)

  {

  TCemployee[4]=

  {

  TC("张三","海淀区复兴路l号","北京","000001",18),

  TC("李四","海淀区复兴路2号","北京","000002",19),

  TC("王五","海淀区复兴路3号","北京","000003",20),

  TC("赵六","海淀区复兴路4号","北京","000004",21)

  };

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

  employee[i].display();

  cout<<"\n修改\"李四\"的名字为\"李小四\"\n"<  for(intj=0;j<4;j++)

  {

  if(employee[j].IsEqual("李四"))

  {

  employee[j].aherName("李小四");

  employee[j].display();

  break;

  }

  }

  }

  一、选择题

  1.D。【解析】对于软件设计中的模壤设计要保证高内聚和低耦合,源程序要有文档说明,同时对程序中数据的说明要规范化。goto语句破坏程序的结构,要尽量避免使用。

  2.B。【解析】对二叉树的中序遍历是指:首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左、右子树时,注意依旧按照“左子树一根结点一右子树”的顺序。

  3.D。【解析】本题主要考查对排序算法的理解。冒泡排序法首先将第一个记录的关键字与第二个记录的关键字进行比较,若逆序则交换,然后比较第二个与第三个,以此类推,直至第n-1个与第n个记录的关键字进行比较。第一趟冒泡排序使最大的关键字元素放到最后。以此类推,进行第2~n次冒泡排序。如果在排序过程中不存在逆序,则排序结束。在最坏情况下,冒泡排序中,若初始序列为“逆序”序列,则需要比较n(D-1)/2次。快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字比另一部分记录的关键字小,然后分别对这两部分记录继续进行排序,最终达到整个记录有序。对于快速排序,当初始记录序列按关键字有序或基本有序时,快速排序退化为冒泡排序,最坏情况下比较次数为n(n-1)/2。

  4.B。【解析】耦合是指模块之间的关联程度,而内聚是指模块内部各部分的聚合程度。模块之间的关联程度越小,模块内部的聚合程度越高,越容易维护。在程序设计中应追求高内聚低耦合。

  5.D。【解析】PDL是过程设计语言(ProcedureDesignLanguage)的简写,也称程序描述语言,是硐于描述模块算法设计和处理细节的语言;N-S图是编程过程中常用的一种分析工具,提出了最初分析问题方法;PAD是问题分析圈(ProblemAnalysisDiagram)的简写,它用二维树型结构的图表示程序的控制流,将这种图转换为程序代码比较容易;DFD(数据流图)是描述数据处理过程的工具。

  6.D。【解析】需求分析常用的工具有数据流图(DFD)、数据字典(DD)、判定树和判定袭。PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工具,不是需求分析的工具。

  7.C。【解析】软件调试技术包括强行排错法、回溯法和原因排除法。边界值分析、错误推断都是黑盒测试的方法。

  8.A。【解析】耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。

  9.C。【解析】实体是客观存在且可以相互区别的事物。实体可以是具体的对象,如一个人,也可以是抽象的事件,如拔河比赛等。因此,实体既可以是有生命的事物,也可以是无生命的事物,但它必须是客观存在且可以相互区别的。

  10.B。【解析】数据库系统由数据库、数据库管理系统、数据库应用系统、数据库管理员和用户构成。所谓数据库是指长期存储在计算机内的、有组织的、可共享的数据集合,数据库管理系统是位于用户与操作系统之间的一层数据管理软件,是数据库系统的核心组成部分,可以管理数据,并提供用户操作的接口。

  11.D。【解析】本题考查虚函数的概念。虚函数是非静态的成员函数,它不能是友元函数,但可以在另一个类中被声明为友元函数。虚函数必须是类的成员函数,虚函数声明只能出现在类定义的函数原型声明中,而不能在成员函数的函数体实现的地方,一般要求基类中说明了虚函数后,派生类说明的虚函数应该与基类中虚函数的参数个数相等,对应参数的类型相同。如果不相同,则将派生类虚函数的参数类型强制转换为基类中虚函数的参数类型。

  12.A。【解析】本题考查循环语句for的使用。for循环开始时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。在for语句中,如果省略了终止条件判断部分,并且在语句中没有break,或终止条件判断部分始终没有终止,都将出现死循环。

  13.C。【解析】本题考查循环语句while的使用。i为3的倍数,当i=24时,i<25,执行while的循环体i+=3,则i=27,不满足i<25的条件,结束循环。

  14.A。【解析】本题很简单,不过考生要注意引用是C++的新特性。只有结构是C语言也有的特性。

  15.B。【解析】引用模板函数和引用一般函数在语法形式上没有任何区别。说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中对应的形参。

  16.B。【解析】本题考核运算符的重载。题中语句为运算符一这是一个二元运算符,且是作为常成员函数来重载的,所以它不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。

  17.B。【解析】内联函数用inline修饰,用于取代C语言中的宏定义。inline是建议机制而不是强制机制,也就是说,程序员可以指定任意函数为inline函数,但是编译器会根据系统情况来决定是否将其inline处理。对于较大的函数,编译器往往会取消其inline特性。inline函数的特点之一就是执行速度快,其实质是在编译时将函数的目标代码插入到每个调用该函数的地方,从而没有出栈入栈、保护现场等开销,提高了效率。在类体内定义的成员函数,自动被编译器当做内联函数处理,在类体外定义的成员函数,如果用inline修饰,则编译器也认为是一种内联建议。

  18.B。【解析】this指针是系统隐含的用于指向当前对象的指针。由于静态函数是同类中所有对象都共享的函数,在内存中只存在一份,不属于某个对象所有,所以静态函数没有this指针。

  19.B。【解析】本题考查cout对象的成员函数put方法和<<操作符的使用方法。

  20.D。【解析】本题考查指针和运算符sizeof的运用。sizeof可以运算出各种数据类型所占内存空间的多少。选项C中,指针P所指向的内存地址中内容是20。在用完申请后的内存应立刻释放。

  21.C。【解析】本题考查构造函数的概念。构造函数可以被重载,函数名必须和类名相同;构造函数可以有一个,也可以有多个;构造函数没有返回值。

  22.A。【解析】本题考查的是运算符的有关概念。“*”是二元运算符,既可用于间接访问也可用于两数相乘;而“=”和“*++”都是一元运算符。

  23.D。【解析】选项A,语句P=&rny;是把对象my的地址值赋值给指针变量P;选项B,语句MyClass*P,my;中由于P只是一个指向对象的指针,因此定义指针P不调用构造函数,所以此语句只调用一次构造函数:对成员函数的引用可以通过两种形式:指针一>成员函数(形参表),或者对象名.成语函数名(形参表),故选项C错误,选项D正确。

  24.B。【解析】本题由主函数main入手,定义TestClass型的常对象a,然后调用对象a中的成员函数print()。因为在C++中,如果一个对象被声明为常对象,则不能调用该对象中的非eonst型的成员函数。所以,这里调用的是对象中的const型成员函数“voidprint()const”,输出为print2。

  25.D。【解析】TestClass为TestClass1的基类,在主函数main中定义TestClass对象b,*P。TestClass1对象d,P指向d,调用其show函数。“TestClass(inti):TestClass(i+1),b(i){}”语句中的TestClass基类参数为2,所以show输出2。

  26.C。【解析】本题考查类的继承、类的实例化和构造函数、析构函数的调用方式以及何时调用。每实例化一个类就要调用其构造函数,结束运行该实例后调用析构函数。

  27.A。【解析】C++把重载的运算符视为特殊的函数,称为运算符函数,函数名就是在运算符前面保留字operatot。运算符重载的定义格式:<返回类型>operator<运算符号>(参数说明);运算符"-"是二元运算符,A选项中重载函数的形参列表都是double,而重载函数的返回类型为类Volume,显然是错误的。

  28.B。【解析】C++中派生类构造函数的一般语法规则为<派生类名>::<派生类名>(<参数表>):<基类1>(<参数表1>),…,<基类名n>(<参数表n>),<子对象l>(<子对象参数表1>,…<子对象m>(<子对象参数表m>){<派生类新增成的初始化语句>;}。

  29.C。【解析】上述类的定义共有三处错误:①类的成员变量不能在定义时进行初始化;②类的构造函数不能有返回值(包括void类型);③类的析构函数不能有参数。

  30.B。【解析】本题复制构造函数一共被调用了三次:第一次是在执行语句Datedate3(datel);时,用已经建立的对象datel对正在建立的对象date3进行初始化;第二次是在调用fun函数时,由于是传值调用,因此实参对象date3要对形参对象d进行初始化;第三次是在执行fun函数中的返回语句returntemp;时,系统初始化一个匿名对象时使用了复制构造函数。

  31.C。【解析】本题考查纯虚函数的定义形式。由于纯虚函数在最后要有“=0”,故据此排除A和D。而B中没有出现virtual关键词,故正确答案为C。

  32.D。【解析】本题考查派生类构造函数的使用。派生类C具有多重继承关系,所以在派生类C的构造函数中应该包含基类A和B的成员初始化列表。

  33.C。【解析】false为逻辑常量,选项A为1小于3并且5小于7,这个是真的;选项B是2不大于4也为真;选项D是5大于8或者2小于8,只要有一个为真,D就为真,所以选项D也为真。选项C中“&”为按位的与运算,3和0按位与,然后再与1,结果为假。

  34.B。【解析】全局变量是在所有函数定义、类定义和程序块之外声明的变量,局部变量是在某个函数定义、类定义或程序块之内声明的变量。用关键字Static声明的局部变量称为静态变量,故正确答案为B项。

  35.B。【解析】使用const关键字修饰的对象称为常对象,题中对象b被声明为类R的常对象。使用const关键字说明的成员函数称为常成员函数,类R中用const重载了函数print()。在使用常对象和常成员函数时应注意的是:const是函数类型的一个组成部分,因此在常成员函数部分也要带const关键字;常成员函数不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数;如果将一个对象说明为常对象,则通过该常对象只能调用它的常成员函数,不能调用其他的成员函数;const关键字可以参与区分重载函数。

  36.B。【解析】由主函数入手,定义了类TestClass的对象s1(2,3),当类对象进入其作用域时调用构造函数,构造函数应该是调用具有参数的“TestClass(inta,intb){x=a;y=b;}”,然后调用成员函数disp(),则输出为“cout<<"x="<

  二、程序改错题

  (1)“voidmain()”。

  (2)“intm=0144;”。

  (3)“intn=OX25;”或“intn===0x25;”。

  【解析】本题主要考查了主函数定义及幂同进制之间的转换,包括十进制到八进制,十进制到十六进制。主函数定义的定义形式为“main()”,函数名之后必须是一对括号,因此第1处应改为“voidmain()”。cout输出默认是以十进制方式输出的,根据题目要求输出的结果可发现变量的初值不正确,十进制的100对应八进制的144,卡进制的37对应十六进制的25,因此2和3应分别改成“intm=0144;”,“intn=0×25;”或“intn=0×25;”。

  三、简单应用题

  intj,i=0;

  chartemp;

  while(n!=0)

  {

  des[i]=n%2+’0’;

  n=n/2:

  i++:

  }//转化结果为二进制最高位在des的下标最低处,顺序刚好相反

  des[i]=NULL;

  for(j=0;j  {

  temp=des[j];//交换

  des[j]=des[i-1-i];

  des[i-1-i]=temp;

  }

  【解析】本题为将十进制数转换成二进制数,因此采用除2求余法,通过该方法最终可以将一个十进制数转换成一个只包含1和0的数组。除2求余法得到的是0和1的数值,不是“0”和“1”字符,还需将数字转化成字符,O和1通过加上“0”的ASCIl码便可得到0和1的ASCIl码字符。因为除2求余法得到的字符数组是从低位到高位保存的,因此需要先倒序后再输出,可利用循环方式将顺序调转过来。

  四、综合应用题

  (1)应添加“charname[MAXLEN],street[MAX-LEN],city[MAXLEN],zipcode[MAXLEN];”。

  (2)应添加“strcpy(name,newName);strcpy(street,newStreet);strcpy(city,newCt);strcPy(zipeode,De-wZp);”。

  (3)应添加“strcpy(name,newName);”。

  (4)应添加“returnstrcmp(name,ename)==0;”。

  【解析】本题第1处要求补充类TC的私有数据成员name、street、city、zipcode和age的定义,分别用于表示姓名、街道、城市、邮编、年龄,除年龄是整型外,其余都是char型的数据,由主函数内的对象数组可知,name、street、city、zipcode均为字符数组,故第1处应添加“charname[MAX-LEN],street[MAXLEN],city[MAXLEN],zipcode[MAXLEN];”。构造函数完成成员变量的初始化,这里需要给name、street、city、zipeode赋初值,可利用字符串拷贝函数将参数字符串复制到成员变量中,第2处应添加“strcpy(name,newName);strcpy(street,newStreet);strcpy(city,newCt);strcpy(zipcode,newZp);”。函数al-terName(char*newName)是改变成员变量name的值,即将参数复制给name,可利用字符串拷贝函数strcpy完成复制任务,故第3处应添加“strcpy(name,newName);”。IsEqual(char*ename)函数是比较name成员变量和参数newName是否相同,可使用字符串比较函数strcmp,第4处应添加“returnstrcmp(name,ename)==0;”。

全国计算机二级考试C++上机考试试题及答案(14)

热点推荐

登录注册
触屏版电脑版网站地图