}
5.(编程,习题6-27)声明Employee类并应用。
在employee.h文件中声明Employee类。
Employee类具有姓名、街道地址、城市和邮编等私有数据成员,都可以用字符数组来表示。
成员函数:
构造函数用来初始化所有成员数组,对字符数组的赋值可以使用字符串拷贝函数strcpy(char*,char*name);
display()使用cout显示姓名、街道地址、城市和邮编等属性;
change_name()改变类中表示姓名属性的字符数组类型的数据成员。
在主程序中声明这个类的对象并对其进行操作。
程序名:
lab6_5.cpp。
参考运行结果:
★程序及运行结果:
//lab6_5employee.h
#include//使用C中的string
#include
usingnamespacestd;
classEmployee{
private:
charname[10],street[20],city[10],mail[7];//姓名、街道、城市、邮编
public:
Employee(char*n,char*s,char*c,char*m);
voiddisplay();
voidchange_name(char*n);
};
Employee:
:
Employee(char*n,char*s,char*c,char*m){
strcpy(name,n);strcpy(street,s);
strcpy(city,c);strcpy(mail,m);
}
voidEmployee:
:
display(){
cout<<"姓名:
"<cout<<"街道:
"<cout<<"城市:
"<cout<<"邮编:
"<}
voidEmployee:
:
change_name(char*n){strcpy(name,n);}
//lab6_5.cpp
#include"lab6_5employee.h"
voidmain(){
Employeeemp("张山","海甸三西路13号","海口市","570228");
emp.display();
emp.change_name("李世");
cout<emp.display();
}
6.(编程,习题6-27)使用上一小题中的Employee类声明对象数组emp[5]。
使用循环语句把数据显示出来。
程序名:
lab6_6.cpp。
参考运行结果:
★程序及运行结果:
//lab6_6.cpp
#include"lab6_5employee.h"
#include
usingnamespacestd;
voidmain(){
Employeeemp[5]={Employee("n1","s1","c1","m1"),
Employee("n2","s2","c2","m2"),
Employee("n3","s3","c3","m3"),
Employee("n4","s4","c4","m4"),
Employee("n5","s5","c5","m5")};
for(inti=0;i<5;i++){
emp[i].display();
cout<}
}
7.(编程)修改实验4中的people(人员)类。
程序名:
lab6_7.cpp。
参考运行结果:
★程序及运行结果:
(1)lab6_7.h:
People(人员)类的声明及成员函数的实现
//lab6_7.h
#include
#include
usingnamespacestd;
classDate{
private:
intyy,mm,dd;
public:
Date(){}
Date(Date&d):
yy(d.yy),mm(d.mm),dd(d.dd){}//增添
~Date(){}
intGetyy()const{returnyy;}
intGetmm()const{returnmm;}
intGetdd()const{returndd;}
voidSetyy(inty){yy=y;}
voidSetmm(intm){mm=m;}
voidSetdd(intd){dd=d;}
};
classPeople{
private:
charname[11];//姓名,增添
charnumber[7];//编号,改为数组
charsex[3];//男或女,改为数组
Datebirthday;//出生日期
charid[16];//身份证号,改为数组
public:
People(){}
People(People&p);
~People(){}
voidGetname(charna[]){strcpy(na,name);}
voidGetnumber(charnu[]){strcpy(nu,number);}
voidGetsex(charse[]){strcpy(se,sex);}
intGetbirthyy()const{returnbirthday.Getyy();}
intGetbirthmm()const{returnbirthday.Getmm();}
intGetbirthdd()const{returnbirthday.Getdd();}
voidGetid(chard[]){strcpy(d,id);}
voidSetname(charna[]){strcpy(name,na);}
voidSetnumber(charnu[]){strcpy(number,nu);}
voidSetsex(charse[]){strcpy(sex,se);}
voidSetbirthyy(inty){birthday.Setyy(y);}
voidSetbirthmm(intm){birthday.Setmm(m);}
voidSetbirthdd(intd){birthday.Setdd(d);}
voidSetid(chard[]){strcpy(id,d);}
voidinput();
voidoutput();
};
People:
:
People(People&p)
:
birthday(p.birthday)
{
strcpy(name,p.name);
strcpy(number,p.number);
strcpy(sex,p.sex);
strcpy(id,p.id);
}
inlinevoidPeople:
:
input()
{
cout<<"姓名:
";cin>>name;
cout<<"编号:
";cin>>number;
cout<<"性别(男/女):
";cin>>sex;
cout<<"出生日期(年月日):
";
inty,m,d;cin>>y>>m>>d;
Setbirthyy(y);Setbirthmm(m);Setbirthdd(d);
cout<<"身份证号:
";cin>>id;
}
inlinevoidPeople:
:
output()
{
cout<<"姓名:
"<"<cout<<"性别:
"<cout<<"出生日期:
"<<cout<<"身份证号:
"<}
(2)lab6_7.cpp:
主函数(输入、输出和拷贝构造函数测试)
//lab6_7.cpp
#include"lab6_7.h"
voidmain(){
Peoplep;
p.input();
cout<p.output();
Peoplepp(p);
cout<pp.output();
}
(3)结果
四、实验提示
步骤2提示
二维数组动态分配空间
示例1m×n矩阵
#include
usingnamespacestd;
voidmain(){
inti,j,m,n,**A;
cout<<"输入矩阵的行数m和列数n:
";
cin>>m>>n;
A=newint*[m];//m行
for(i=0;icout<<"输入"<for(i=0;icout<<"第"<
";
for(j=0;j>A[i][j];//数组形式
}
cout<<"\n输入的矩阵为:
"<for(i=0;ifor(j=0;jcout<<""<cout<}
}
示例2不规范的矩阵
#include
usingnamespacestd;
voidmain(){
int**a=newint*[2];
a[0]=newint[3];
a[1]=newint[2];
a[0][0]=11;a[0][1]=12;a[0][2]=13;
a[1][0]=21;a[1][1]=22;
cout<cout<}