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

全国计算机二级考试C++语言程序设计上机考试试题及答案(2)

2017-6-15编辑:daibenhua

全国计算机二级考试C++语言程序设计上机考试试题及答案

  一、程序改错题

  使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句:

  TC1:0

  TC2

  注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。

  试题程序:

  #include

  structTC1

  {

  TCl(inti=0)

  {

  m_i=i;

  }

  voidprint()

  {

  cout<<"TCl:"<}

  intm_i;

  };

  classTC2

  {

  public:

  TC2()

  {

  }

  voidprint()

  {

  cout<<"TC2"<}

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

  private:

  ~TC2()

  {

  }

  };

  intmain()

  {

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

  TC1obj1();

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

  TC20bj2();

  obj1.print();

  obj2.print();

  return0;

  }

  二、简单应用题

  使用VC++6.0打开考生文件夹下的源程序文件2.cpp。完成函数fun(char*S,inta[]),其功能是把字符串S中的数字提取出来存储在a[]中,然后返回数字的个数。

  例如s="1234abcdef567",则a[]中存储着1234567,返回7。

  注意:不能修改程序的其他部分,只能修改fun函数。

  试题程序:

  #include(iostream.h>

  intfun(char*s,inta[])

  {

  }

  intmain()

  {

  inta[1024];

  intlen=fun("1234abedef567",a);

  for(inti=0;i{

  COUt<}

  cout

  }

  三、综合应用题

  使用VC++6.0打开考生文件夹下的源程序文件3.cpp。类People包括姓名和年龄两个字段。函数fun获得年龄比较大的人的姓名,然后输出这个姓名到屏幕。

  其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。

  (1)完成类的构造函数功能,请在注释1后添加适当的语句。

  (2)完成构造函数对姓名的赋值,请在注释2后添加适当的语句。

  (3)定义类的友元函数fun,请在注释3后添加适当的语句。

  (4)补充函数fun的年龄比较功能,请在注释4后添加适当的语句。

  注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。

  试题程序:

  #include

  classPeople

  {

  public:

  //********1********

  {

  inti;

  for(i=0;sUserName[i]!=0;i++)

  {m_UserName[i]=sUserName[i];

  }

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

  m_Old=nOld;

  }

  private:

  charm_UserName[32];

  intm_Old;

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

  };

  voidfun(char*s,People&personl,People&person2

  {

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

  if()

  {

  for(inti=0;personl.m_UserName[i]!=0;i+

  +)

  {

  s[i]=personl.m_UserName[i];

  s[i+1]=0;

  }

  }

  else

  {

  for(inti=0;person2.m_UserName[i]!=0;i+

  +)

  {s[i]=person2.m_UserName[i];

  s[i+1]=0;

  }

  }

  }

  voidmain()

  {

  chars[32];

  Peoplepl("abc",20);

  Peoplep2("def",30):

  fun(S,p1,p2);

  cout

  }

  一、程序改错题

  (1)应改为“public:”。

  (2)应改为“TClobj1(0);”或“TClobjl;”。

  (3)应改为“TC20bj2;”。

  【解析】本题第1处的“private:~TC2()”是析构函数,它不是私有的,所以这里应该删除“private:”或修改为“pub-lic:”。第2处的“TClobjl();”语句是定义一个TCl类型的对象objl(),根据类TCl构造函数的定义“TCl(inti=o)”,知道存在整型参数,应该补充参数,或者只是先定义一个对象名,然后在使用时补充参数,即修改为“TClobjl(0);或TClobil;”。第3处的“TC20bj2();”语句修改为“TC20bj2;”。

  二、简单应用题

  intj=0;

  for(inti=0;s[i]!=0;i++)//字符串内循环

  {

  if(s[i]>=’0’&&s[i]<=’9’)//判断字符是否为0

  ~9的字符

  a[j++]=s[i]-’0’;//如果为0~9的字符,转换

  为整型

  }

  }

  returnj;//返回数字个数

  【解析】本题中变量j用来记录转换的个数,首先初始化为0,然后利用for循环判断每一个当前字符是否为数字字符。如果为数字字符,就将其减去字符“0”,即实现字符和整型的转换,并且将j的变量值加1。

  三、综合应用题

  (1)应添加“People(char*sUserName,intnOld)”。

  (2)应添加“m_UserName[i]=0;”。

  (3)应添加“friendvoidfun(char*s,People&personl,People&person2);”。

  (4)将“if()”补充完整为“if(personl.m_Old)person2.mOld)”。

  【解析】本题第1处要求“完成类的构造函数”。根据

  “classPeople”语句知道People为类,所以类People的构造函数名为People,根据第1处的大括弧中的语句知道函数中的参数为数组sUserName存放姓名,整型nOld存放年龄,所以补充构造函数定义为“People(char*sUserName,intnOtd)”。第2处要求“完成构造函数对姓名的贼值”。第2处补全姓名赋值,即“m_UserName[i]=0;”。第3处要求“定义类的友元函数fun”。在C++中,如果在本类以外的其他地方定义了一个函数,在类体中是用friend对该函数进行声明的,此函数称为本类的友元函数,并且能够调用本类中的成员变量。程序中的fun函数定义为“voidfun(char*S,People&personl,People&person2)”,所以声明fun()为类People的友元函数,即这里补全“friendvoktfun(char*s,People&personl,People&person2);”。第4处要求“补充函数fun的年龄比较”。类People中年龄的变量为m_Old,根据C++中类变量的调用格式补充第4处if语句中的条件判断语句,即“if(per-sonl.m_O1d)person2.m_Old)”。

全国计算机二级C++语言程序设计考试精选选择题(6)

热点推荐

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