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

C++习题与解析(引用-04)

www.nanhushi.com     佚名   不详 

题6.阅读下面的程序与输出结果,添加一个拷贝构造函数来完善整个程序 
#include<iostream.h> 
class Cat 

public: 
Cat(); 
Cat(const Cat &); 
~Cat(); 
int getage()const{return *itsage;} 
void setage(int age){*itsage=age;} 
protected: 
int *itsage; 
}; 
Cat::Cat() 

itsage=new int; 
*itsage=5; 

Cat::~Cat() 

delete itsage; 
itsage=0; 

void main() 

Cat frisky; 
cout<<"frisky’s age:"<<frisky.getage()<<endl; 
cout<<"setting frisky to 6...\n"; 
frisky.setage(6); 
cout<<"creating boots from frisky\n"; 
Cat boots(frisky); 
cout<<"frisky’s age:"<<frisky.getage()<<endl; 
cout<<"boots’age:"<<boots.getage()<<endl; 
cout<<"setting frisky to 7...\n"; 
frisky.setage(7); 
cout<<"frisky’s age:"<<frisky.getage()<<endl; 
cout<<"boots’age:"<<boots.getage()<<endl; 


当添加了拷贝构造函数后,程序的运行结果为: 
frisky’s age:5 
setting frisky to 6... 
creating boots from frisky 
frisky’s age:6 
boots’age:6 
setting frisky to 7... 
frisky’s age:7 
boots’age:6 

解: 
添加的拷贝构造函数如下: 
Cat::Cat(const Cat& c) 

itsage=new int; 
*itsage=*c.itsage; 


题7.设计一个类Sample,有一个私有数据成员,建立该类的四个对象s1(n=10)、s2(n=20)、s3(n=30)、和s4(n=40),建立一个成员函数实现这些对象n值的累加。 
解: 
依题意,建立一个成员函数add(),其参数为Sample对象引用,用于累加对象n值。 
程序如下: 
#include<iostream.h> 
class Sample 

int n; 
public: 
Sample(){} 
Sample (int i){n=i;} 
void add(Sample &s) // 对象引用作为参数 

if(&s==this) // 不能自己相加,this是当前对象的指针 
cout<<"自己不能相加"<<endl; 
else n+=s.n; 

void disp(){ cout<<endl<<" n="<<n<<endl;} 
}; 
void main() 

Sample s1(10),s2(20),s3(30),s4(40); 
s1.add(s2); 
s1.add(s3); 
s1.add(s4); 
s1.disp(); 
cout<<endl; 


本程序的执行结果如下: 
n=100 



题8.编写一个程序,设计一个点类Point,求两个点之间的距离。 
解: 
设计一个普通函数distance(Point &p1,Point &p2),用于计算p1和p2点之间的距离。 
本题程序如下: 
#include<iostream.h> 
#include<math.h> 
class Point 

int x,y; 
public: 
Point(int i,int j){x=i;y=j;} 
int getx(){ return x;} 
int gety(){ return y;} 
void disp() 

cout<<"("<<x<<"’"<<y<<")"; 

}; 
float distance(Point &p1,Point &p2) // 对象引用作为参数 

float d; 
d=sqrt((p1.getx()-p2.getx())*(p1.getx()-p2.getx())+ 
(p1.gety()-p2.gety())*(p1.gety()-p2.gety())); 
return d; 

void main() 

Point p1(2,2),p2(5,5); 
p1.disp(); cout<<"与"; p2.disp(); 
cout<<"之间距离="<<distance(p1,p2)<<endl; 


本程序执行结果如下 
(2,2) 与 (5,5) 之间距离=4.24264 


题9.编写一个程序,设计一个职工类Person,一个系有若干个职工,按职务分为系主任、室主任和职工,给出他们之间的领导关系。 
解: 
类Person有姓名、职务和指向领导的指针等私有数据,以及两个构造函数和以下成员函数:setleader()(设置当前职工的领导);getname()(获取职工姓名);getleader()(获取领导者对象指针);disp()(输出姓名和职务)。 
本题程序如下: 
#include<iostream.h> 
#include<stdio.h> 
#include<string.h> 
class Person 

char name[10]; 
char prof[10]; 
Person *leader; 
public: 
Person(){strcpy(name,"\0");} 
Person(char n[],char p[]) 

strcpy(name,n); 
strcpy(prof,p); 
leader=new Person; 

void setleader(Person &p){leader=&p;} // 对象引用作为参数 
char *getname(){ return name;} 
Person *getleader() 

return leader; 

void disp() 

printf("%10s %10s%",name,prof); 

}; 
void main() 

Person p[]={Person("王华","室主任"),Person("李明","职工"), 
Person("陈强","系主任"),Person("章城","职工"), 
Person("张伟","室主任"),Person("许源","职工")}; 
p[0].setleader(p[2]); 
p[1].setleader(p[0]); 
p[3].setleader(p[4]); 
p[4].setleader(p[2]); 
p[5].setleader(p[4]); 
printf(" 姓名 职务 领导姓名\n"); 
printf("------------------------------\n"); 
for(int i=0;i<6;i++) 

p[i].disp(); 
printf("%10s\n",(p[i].getleader())->getname()); 



本程序的执行结果如下: 
姓名 职务 领导姓名 
----- ------ ------- 
王华 室主任 陈强 
李明 职工 王华 
陈强 系主任 
章城 职工 张伟 
张伟 室主任 陈强 
许源 职工 张伟 

 

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

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

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

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

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