这个程序哪错了。。。

kurdwang 2011-05-26 10:10:03
#include "windows.h"
#include "stdlib.h"
#include "string.h"
#include "iostream.h"



struct phonebook
{char name[20];
long number;}; //可以放置姓名与电话
class Phonebook{
struct phonebook *p;
int n;//条目数
public:Phonebook();//缺省构造函数
Phonebook(int);
friend Phonebook operator+(Phonebook&,Phonebook&);//操作符+的重载函数
~Phonebook();//析构函数
void setname(int,char*);
void setnumber(int,long);
void print();
};
//-----------------------------------
Phonebook::Phonebook(){
n=0;
p=NULL;}
//------------------------------------
Phonebook::Phonebook(int a){
n=a;//条目数
p=(struct phonebook*)calloc(n,sizeof(struct phonebook));//动态分配空间
}
Phonebook::~Phonebook()
{
free (p);}
void Phonebook::print(){
for (int i=0;i<n;i++)
cout<<"name="<<(p+i)->name<<" number="<<(p+i)->number<<endl;}
void Phonebook::setnumber(int a,long b){
(p+a)->number =b;}
void Phonebook::setname(int a,char* b){
strcpy((p+a)->name,b);}
//------------------------------------
Phonebook operator+(Phonebook& aa,Phonebook& bb)
{
Phonebook xx;//创建一个新的电话本
xx.n=bb.n+aa.n;//新建电话本的条目数等于aa,bb条目数相加
for(int i=0;i<aa.n;i++)
{(xx.p+i)->number=(aa.p+i)->number;
strcpy((xx.p+i)->name,(aa.p+i)->name);
}//在xx的前aa.n段插入a中的电话条目
for(i=aa.n;i<=aa.n+bb.n;i++)
{int j=0;
(xx.p+i)->number=(bb.p+j)->number;
strcpy((xx.p+i)->name,(bb.p+j)->name);
j++;
}
//在aa.n段后面aa.n到aa.n+bb.n段之间插入bb中的条目数
return xx;//返回电话本xx
}

int main(int argc, char* argv[])
{
Phonebook a;
Phonebook b;
Phonebook c;
a.setname(0,"h1");
a.setname(1,"h2");
a.setnumber(0,123);
a.setnumber(1,234);
b.setname(0,"h1");
b.setname(1,"h2");
b.setnumber(0,123);
b.setnumber(1,234);


c=a+b;
c.print;
return 0;
}
...全文
103 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
QQIANQQ 2011-05-26
  • 打赏
  • 举报
回复

#include "windows.h"
#include "stdlib.h"
#include "string.h"
#include "iostream"//该一下
using namespace std;//加上这个

struct phonebook
{char name[20];
long number;}; //可以放置姓名与电话
class Phonebook{
struct phonebook *p;
int n;//条目数
public:Phonebook();//缺省构造函数
Phonebook(int);
friend Phonebook operator+(Phonebook&,Phonebook&);//操作符+的重载函数
~Phonebook();//析构函数
void setname(int,char*);
void setnumber(int,long);
void print();
};
//-----------------------------------
Phonebook::Phonebook(){
n=0;
p=NULL;}
//------------------------------------
Phonebook::Phonebook(int a){
n=a;//条目数
p=(struct phonebook*)calloc(n,sizeof(struct phonebook));//动态分配空间
}
Phonebook::~Phonebook()
{
free (p);}
void Phonebook::print(){
for (int i=0;i<n;i++)
cout<<"name="<<(p+i)->name<<" number="<<(p+i)->number<<endl;}
void Phonebook::setnumber(int a,long b){
(p+a)->number =b;}
void Phonebook::setname(int a,char* b){
strcpy((p+a)->name,b);}
//------------------------------------
Phonebook operator+(Phonebook& aa,Phonebook& bb)
{
Phonebook xx;//创建一个新的电话本
xx.n=bb.n+aa.n;//新建电话本的条目数等于aa,bb条目数相加
for(int i=0;i<aa.n;i++)
{(xx.p+i)->number=(aa.p+i)->number;
strcpy((xx.p+i)->name,(aa.p+i)->name);
}//在xx的前aa.n段插入a中的电话条目
for(int i=aa.n;i<=aa.n+bb.n;i++)//i未定义 加上int
{int j=0;
(xx.p+i)->number=(bb.p+j)->number;
strcpy((xx.p+i)->name,(bb.p+j)->name);
j++;
}
return xx;}

int main(int argc, char* argv[])
{
Phonebook a;
Phonebook b;
Phonebook c;
a.setname(0,"h1");
a.setname(1,"h2");
a.setnumber(0,123);
a.setnumber(1,234);
b.setname(0,"h1");
b.setname(1,"h2");
b.setnumber(0,123);
b.setnumber(1,234);

c=a+b;
c.print();//没加() return 0;
}


QQIANQQ 2011-05-26
  • 打赏
  • 举报
回复
#include "windows.h"
#include "stdlib.h"
#include "string.h"
#include "iostream"//该一下
using namespace std;//加上这个

struct phonebook
{char name[20];
long number;}; //可以放置姓名与电话
class Phonebook{
struct phonebook *p;
int n;//条目数
public:Phonebook();//缺省构造函数
Phonebook(int);
friend Phonebook operator+(Phonebook&,Phonebook&);//操作符+的重载函数
~Phonebook();//析构函数
void setname(int,char*);
void setnumber(int,long);
void print();
};
//-----------------------------------
Phonebook::Phonebook(){
n=0;
p=NULL;}
//------------------------------------
Phonebook::Phonebook(int a){
n=a;//条目数
p=(struct phonebook*)calloc(n,sizeof(struct phonebook));//动态分配空间
}
Phonebook::~Phonebook()
{
free (p);}
void Phonebook::print(){
for (int i=0;i<n;i++)
cout<<"name="<<(p+i)->name<<" number="<<(p+i)->number<<endl;}
void Phonebook::setnumber(int a,long b){
(p+a)->number =b;}
void Phonebook::setname(int a,char* b){
strcpy((p+a)->name,b);}
//------------------------------------
Phonebook operator+(Phonebook& aa,Phonebook& bb)
{
Phonebook xx;//创建一个新的电话本
xx.n=bb.n+aa.n;//新建电话本的条目数等于aa,bb条目数相加
for(int i=0;i<aa.n;i++)
{(xx.p+i)->number=(aa.p+i)->number;
strcpy((xx.p+i)->name,(aa.p+i)->name);
}//在xx的前aa.n段插入a中的电话条目
for(int i=aa.n;i<=aa.n+bb.n;i++)//i未定义 加上int {int j=0;
(xx.p+i)->number=(bb.p+j)->number;
strcpy((xx.p+i)->name,(bb.p+j)->name);
j++;
}
return xx;}

int main(int argc, char* argv[])
{
Phonebook a;
Phonebook b;
Phonebook c;
a.setname(0,"h1");
a.setname(1,"h2");
a.setnumber(0,123);
a.setnumber(1,234);
b.setname(0,"h1");
b.setname(1,"h2");
b.setnumber(0,123);
b.setnumber(1,234);

c=a+b;
c.print();//没加() return 0;
}

ryfdizuo 2011-05-26
  • 打赏
  • 举报
回复
int main(int argc, char* argv[])
{
Phonebook a;
Phonebook b;
Phonebook c;
a.setname(0,"h1");
a.setname(1,"h2");
a.setnumber(0,123);
a.setnumber(1,234);
b.setname(0,"h1");
b.setname(1,"h2");
b.setnumber(0,123);
b.setnumber(1,234);


c=a+b;
c.print(); //函数加圆括号
return 0;
}

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧