就业数据资源平台
当前位置:首页 > C++语言程序设计
2014年计算机二级C上机考试试题及答案10

程序改错题 
  使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正程序中的错误,使程序输出的结果为 
  10 
  6 
  30 
  2 
  2 
  注意:错误的语句在//******error******的下面,修改该语句即可。 
  试题程序: 
  #include 
  classTC 
  { 
  private: 
  intnumber; 
  intAdd(inti) 
  { 
  returnnumber+=i: 
  } 
  intSub(inti) 
  { 
  returnnumber-=i: 
  } 
  intMul(inti) 
  { 
  returnnumber*=i: 
  } 
  intDiv(inti) 
  { 
  if(i!=O) 
  { 
  returnnumber/=i; 
  } 
  else 
  returnnumber; 
  } 
  //******error****** 
  typedefint(FUNC)(int); 
  //******error****** 
  FUNCfunc[]; 
  public: 
  TC() 
  { 
  fune[0]=TC::Add;, 
  fund[1]=TC::Sub; 
  func[2]=TC::Mul; 
  func[3]=TC::Div; 
  number=0; 
  } 
  intCallFunetion(inti,intj) 
  { 
  //******error****** 
  return(func[i])(j); 
  } 
  }; 
  voidmain() 
  { 
  TCmyobj; 
  cout<  cout<  cout<  cout<  cout<  } 

  (1)应改为:“typedefint(TC::*FUNC)(int);”。 
  (2)应改为:“FUNCfunc[4];”。 
    
  (3)应改为:“return(this->*fund[i])(j);”。 
  【解析】在类中定义函数指针须指定类名及指针定义运算符*,因此第1处函数指针正确的定义为“typedefint(TC::*FUNC)(int);”。函数指针数组本身是数组类型,因此在定义时如果没有初始化,就必须指定数组大小,在本题中因为指针数组包含的指针变量需要指向4种算数运算,因此定义指针数组大小为4,即第2处应改为“FUNCfunc[4];”。func是指针数组,因此访问时需要有指针运算符“*”,第3处应改成“return(this->*func[i])(j);”。 
就业数据资源平台