就业数据资源平台
当前位置:首页 > C++语言程序设计
2010年全国计算机等级考试二级C++模拟试题及答案(5)

  【12】malloc(11)或malloc(sizeof(char)*11)
  12.下列程序在构造函数和析构函数中申请和释放类的数据成员int *a,申请时使用形参b初始化a,请填空。
  class A
  {
  public:
  A(int b);
  ~A();
  private:
  int *a;
  };
  A::(int b)
  {【13】;}
  A::~A()
  {【14】;}
  【参考答案】
  12.【13】a=new int(b) 【14】delete a
  13.将x+y*z中的“+”用成员函数重载,“*”用友元函数重载应写为【15】。
  【参考答案】
  【15】x.operator+(operator *(y,z))


  上机部分
  一、改错题
  使用VC6打开考生文件夹下的工程kt1_1,此工程包含一个源程序文件kt1_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:
  Whichact(aorb)?b
  act1
  act2
  Bact3
  Bact4
  Bend
  源程序文件kt1_1.cpp清单如下:
  #include
  classA
  {public:
  virtualvoidact1(){cout<<"act1\n";act2();}
  voidact2(){cout<<"act2\n";act3();}
  voidact3(){cout<<"Aact3\n";act4();}
  virtualvoidact4{cout<<"Aact4\n";act5();}
  voidact5(){cout<<"Aend\n";}
  };
  classB:publicA
  {
  voidact3(){cout<<"Bact3\n";act4();}
  voidact4(){cout<<"Bact4\n";act5();}
  voidact5(){cout<<"Bend\n";}
  };
  voidmain(void)
  {
  charc;
  A*a;
  cout<<"Whichact(aorb)?";
  cin<
  if(c=='a')
  a=newA;
  else
  a=newB;
  a->act1();
  deletea;
  【参考答案】
  (1)将void act3(){cout<<"Aact3\n";act4();}
  改为:virtual void act3(){cout<<"Aact3\n";act4();}
  (2)将virtual void act4{cout<<"Aact4\n";act5();}
  改为:virtual void act4(){cout<<"Aact4\n";act5();}
  (3)将cin<
  改为:cin>>c;


  【试题解析】
  (1)主要考查对虚函数使用规则的理解,要实现对函数act3的动态联编应该使用虚函数,这样在本题中对于函数的调用才能实现根据不同对象调用不同函数;
  (2)主要考查对函数定义的掌握,虽然参数表为空,但括号是不能省略的;
  (3)主要考查是否会使用流输入操作,本题中使用的是流输出符。
  二、简单应用题
  请编写一个函数voidfun(charss[]),该函数将字符串ss翻转,如ss为“123abc”则翻转后为“cba321”。注意:用数组方式及for循环来实现该函数。
  注意:部分源程序已存在文件kt1_2.cpp中。
  请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。
  文件kt1_2.cpp的内容如下:
  #include
  #include
  voidfun(charss[]);
  【参考答案】
  (1)将void act3(){cout<<"Aact3\n";act4();}
  改为:virtual void act3(){cout<<"Aact3\n";act4();}
  (2)将virtual void act4{cout<<"Aact4\n";act5();}
  改为:virtual void act4(){cout<<"Aact4\n";act5();}
  (3)将cin<
  改为:cin>>c;
  【试题解析】
  (1)主要考查对虚函数使用规则的理解,要实现对函数act3的动态联编应该使用虚函数,这样在本题中对于函数的调用才能实现根据不同对象调用不同函数;
  (2)主要考查对函数定义的掌握,虽然参数表为空,但括号是不能省略的;
  (3)主要考查是否会使用流输入操作,本题中使用的是流输出符。


  二、简单应用题
  请编写一个函数voidfun(charss[]),该函数将字符串ss翻转,如ss为“123abc”则翻转后为“cba321”。注意:用数组方式及for循环来实现该函数。
  注意:部分源程序已存在文件kt1_2.cpp中。
  请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。
  文件kt1_2.cpp的内容如下:
  #include
  #include
  voidfun(charss[]);
  voidmain()
  {chars[80];
  cout<<"请输入字符串:";
  cin>>s;
  fun(s);
  cout<<"逆序后的字符串:"<
  void fun(charss[])
  {
  }
  【参考答案】
  void fun(char ss[])
  {
  int n=strlen(ss);
  for(int i=0;i<(n/2); i++)
  {char c=ss[i];
  ss[i]=ss[n-1-i];
  ss[n-1-i]=c;}
  }
  【试题解析】
  本题考查的是利用数组及for循环、if条件判断等基本控制语句解决实际问题的能力,基本算法是根据字符串的对称性把对应的两个字符串互相换位。


  三、综合应用题
  使用VC6打开考生文件夹下的工程test1_3,此工程包含一个源程序文件kt1_3.cpp,其中定义了类Cat,但类Cat的定义并不完整。请按要求完成下列操作,将类Cat的定义补充完整。
  (1)定义类Cat的保护数据成员itsAge用于表示年龄,它是int型的数据。请在注释“//**1**”之后添加适当的语句。
  (2)完成成员函数GetAge()的类外定义,返回成员的itsAge值,请在注释“//**2**”之后添加适当的语句。
  (3)完成成员函数SetAge(intage)的类外定义,把数据成员itsAge赋值为参数age的值,请在注释“//**3**”之后添加适当的语句。

  (4)完成成员函数Meow的类外定义,使其输出字符串“meow.”到屏幕上。请在注释“//**4**”之后添加适当的语句。
  输出结果如下:
  meow.
  kittyisacatwhois5yearsold.
  meow.
  注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
  源程序如下:
  #include
  classCat
  {
  public:
  intGetAge();
  voidSetAge(intage);
  voidMeow();
  protected:
  //**1**
  };
  intCat::GetAge()
  {
  //**2**
  }
  voidCat::SetAge(intage)
  {
  //**3**
  }
  voidCat::Meow()
  {
  //**4**
  }
  voidmain()
  {
  Catkitty;
  kitty.Meow();
  kitty.SetAge(5);
  cout<<"kittyisacatwhois";
  cout<
  cout<<"yearsold.\n";
  kitty.Meow();
  }
  【参考答案】
  (1)int itsAge;
  (2)return itsAge;
  (3)itsAge=age;
  (4)cout<<"meow.\n";
  【试题解析】
  本题主要考查类的定义和成员函数的定义的深刻理解。

就业数据资源平台