C 习题和解析(类和对象-08)
2008-02-23 05:34:43来源:互联网 阅读 ()
解:
#include<iostream.h>
#include<string.h>
class employee
{
protected:
char name[10]; // 姓名
char street[20]; // 街道地址
char city[10]; // 市
char prov[10]; // 省
char post[7]; // 邮政编码
int no; // 记录序号
public:
employee(char [],char [],char [],char [],char [],int);
void changename(char str[]);
void display();
};
employee::employee(char n[],char s[],char c[],char p1[],char p2[],int num)
{
strcpy(name,n);
strcpy(street,s);
strcpy(city,c);
strcpy(prov,p1);
strcpy(post,p2);
no=num;
}
void employee::changename(char n[])
{
strcpy(name,n);
}
void employee::display()
{
cout<<"输出记录 "<<no<<endl;
cout<<" 姓名:"<<name<<endl;
cout<<"街道地址:"<<street<<endl;
cout<<" 市:"<<city<<endl;
cout<<" 省:"<<prov<<endl;
cout<<"邮政编码"<<post<<endl;
}
void main()
{
employee obj1("王华","中华路15号","武汉市","湖北省","430070",1);
employee obj2("杨丽","天津路30号","南京市","江苏市","210020",2);
obj1.display();
obj2.display();
}
本程式的执行结果如下:
输出记录1
姓名:王华
街道地址:中华路15号
市:武汉市
省:湖北省
邮政编码:430070
输出记录2
姓名:杨丽
街道地址:天津路30号
市:南京市
省:江苏省
邮政编码:210020
-------------------------------------------------------------
题17.修改前一题的类,将姓名构成类name,其名和姓在该类中为保护数据成员,其构造函数为接收一个指向完整姓名字符串的指针,其display()函数输出姓名。然后将employee类中的姓名成员(字符数组)换成name类对象。编制主函数如下:
void main()
{
employee obj("王华","中华路15号"."武汉市","湖北省","430070",1);
obj.display();
obj.changename("王国强");
obj.display();
}
解:
#include<iostream.h>
#include<string.h>
class name
{
protected:
char fname[4]; // 姓
char sname[6]; // 名
public:
name(){}
name(char *);
void changename(char *);
void display();
};
class employee
{
protected:
name na; // 姓名
char street[20]; // 街道地址
char city[10]; // 市
char prov[10]; // 省
char post[7]; // 邮政编码
int no; // 记录序号
public:
employee(char [],char [],char [],char [],char [],int);
void changename(char str[]);
void display();
};
name::name(char *p)
{
int i=0;
while(*p!=' ')
fname[i ]=*p ;
fname[i]='\0';
i=0;
p ;
while(*p!='\0')
sname[i ]=*p ;
sname[i]='\0';
}
void name::changename(char *p)
{
int i=0;
while(*p!=' ')
fname[i ]=*p ;
fname[i]='\0';
i=0;
p ;
while(*p!='\0')
sname[i ]=*p ;
sname[i]='\0';
}
void name::display()
{
cout<<fname<<sname;
}
employee::employee(char n[],char s[],char c[],char p1[],char p2[],int num)
{
changename(n);
strcpy(street,s);
strcpy(city,c);
strcpy(prov,p1);
strcpy(post,p2);
no=num;
}
void employee::changename(char n[])
{
na.changename(n);
}
void employee::display()
{
cout<<post<<"\n\n";
cout<<"\t"<<prov<<city<<street<<"\n\n";
cout<<"\t\t";
na.display();
cout<<"(收)"<<"\n\n";
}
void main()
{
employee obj("王华","中华路15号","武汉市","湖北省","430070",1);
obj.display();
obj.changename("王国强");
obj.display();
}
本程式的执行结果如下:
430070
湖北省武汉市中华路15号
王 华(收)
430070
湖北省武汉市中华路15号
王国强(收)
---------------------------------------------------------
题18.编写一个程式,在已配置好若干个用户名/口令后,通过输入用户名,查找对应的口令,连续执行这一过程直到用户输入结束标记(“end“)为止。
解:
设计一个User类,数据成员有User和pass两个字符数组,存储用户名和口令,另有一个构造函数和getuaer()、getpass()两个成员函数,用于获取用户名和口令。在main()中设计一个对象数组ua,当用户输入一个用户名后,在ua中查找,找到后输出对应的口令,很难找到时输出相应的提示信息。
本题程式如下:
#include<iostream.h>
#include<string.h>
class User
{
char user[10];
char pass[7];
public:
User(char [],char []);
char *getuser();
char *getpass();
};
User::User(char u[],char p[])
{
strcpy(user,u);
strcpy(pass,p);
}
char *User::getuser()
{
return user;
}
char *User::getpass()
{
return pass;
}
void main()
{
User ua[]={User("Li","123456"),User("wang","654321"),
User("Chen","213412"),User("Xu","878616"),
User("Ma","876574"),User("Song","666666")};
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: C 习题和解析(类和对象-06)
下一篇: C 习题和解析(类和对象-09)
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash