请使用菜单命令或直接用VC6打开考生文件夹下的工程prj03。请完善下列程序,实现一个Number类。Add函数计算2个Number类对象之和,并将和作为Number对象返回。这2个Number对象中各包含一个用字符串表示的10进制正整数,均不超过int的

admin2019-06-05  36

问题 请使用菜单命令或直接用VC6打开考生文件夹下的工程prj03。请完善下列程序,实现一个Number类。Add函数计算2个Number类对象之和,并将和作为Number对象返回。这2个Number对象中各包含一个用字符串表示的10进制正整数,均不超过int的表示范围。在main函数中给出了一组测试数据,使用这组数据进行测试时程序的输出应该是:100
注意:只需在//**********333**********//**********666**********之间填入所编写的若干语句,不要改动程
序中的其他内容。
#include
#include
#include
#include”proj 3.h”
using namespace std;
Number::Number(char木n){
  num=new char[strlen(n)+1];
  strcpy(num,n);
}
Number::Number(Number&n){
  num=new char[strlen(n.num)+1];
  strcpy(num,n.num);
}
Number::Number(int n){
  char*tmp=new char[30];
  itoa(n,tmp,i0);  //函数itoa的功能是将n转换为字符串,存放于tmp指向的敷组中
  num=new char[strlen(tmp)+1];
  strcpy(num,tmp);
}
Number::一Number(){
if(num)
delete[]num;
}
Number Number::Add(Number n)f
//**********333**********
}
//**********666**********
}
int main(){
  Number numl(“32”);
Number num2(“68”);
Number&num3=numl.Add(hum2);
cout<writeToFile(“C:\test V”);
return 0;
  }
  //proj 3 t proj 3.h
  clasS Number{
  private:
  char*num;//具体数字,num[0]表示最高位的数
public:
一Number();
Number(char*n);
Number(Number&n);
Number(int n);
Number Add(Number n);
char*GetNum()(return num;}
};
void writeToFile(const char*path);

选项

答案int i=atoi(hum); int j=atoi(n.GetNum()); return Number(i+j);

解析 本题考查的是Number类,其中涉及C语言的库函数、构造函数的使用、成员函数的使用。
【解题思路】
主要考查考生对库函数、对象成员和构造函数使用的掌握情况,函数Add的功能是将函数参数n与自身相加,返回相加后的Number对象,Number类中成员字符串。aura是用来表示十进制的整数,所以将两个Number相加需要首先将字符串aura转化为整数,这里需要使用库函数atoi,将调用对象的hum和对象n的aura转化为十进制整数i,j,在转化对象n的aura成员时,由于hum是Number类的私有成员,所以不能直接使用,而应该通过成员函数GetNum()返回num;得到十进制数i、j后,再用i与j的和构造成Number对象,所以需要使用Number的参数为整数的构造函数,即Number’(int i),构造Number对象后返回。
转载请注明原文地址:https://kaotiyun.com/show/d18p777K
0

最新回复(0)