您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> C十十 >> 辅导 >> 正文    
  C++习题与解析(类和对象-08) 【注册男护士专用博客】          

C++习题与解析(类和对象-08)

www.nanhushi.com     佚名   不详 

题16.创建一个employee类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码。把表示构造函数、changname()、display()的函数的原型放在类定义中,构造函数初始化每个成员,display()函数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公共的。 
解: 
#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")}; 
char name[10]; 
while(1) 

cout<<"输入用户名:"; 
cin>>name; 
if(strcmp(name,"end")==0) 
break; 
for(int i=0;i<6;i++) 
if(strcmp(name,ua[i].getuser())==0) 

cout<<" 用户口令:"<<ua[i].getpass()<<endl; 
break; 

if(i==6) 
cout<<" 用户名不存在"<<endl; 


本程序的执行结果如下: 
输入用户名: Li 
用户口令:123456 
输入用户名:Wang 
用户口令:654321 
输入用户名:He 
用户名不存在 
输入用户名:end 

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。