c程序设计实验辅导及习题解答实验.docx
- 文档编号:24728755
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:10
- 大小:16.44KB
c程序设计实验辅导及习题解答实验.docx
《c程序设计实验辅导及习题解答实验.docx》由会员分享,可在线阅读,更多相关《c程序设计实验辅导及习题解答实验.docx(10页珍藏版)》请在冰豆网上搜索。
c程序设计实验辅导及习题解答实验
实验十一
任务1:
程序调试。
类静态数据的应用。
下列程序设计了一个职工类,职工类中包括职工姓名、薪水和所有职工的薪水总和allSalary。
薪水总和员是所有职工对象薪水的统计和,它属于类而不属于某个对象,因而设置为static数据。
程序为:
#include"stdafx.h"
#include
usingnamespacestd;
#include
classEmployee
{
private:
charname[30];
floatsalary;
staticfloatallSalary;
public:
Employee(char*n,floats)
{
strcpy(name,n);
salary=s;
allSalary=allSalary+salary;
}
~Employee(void){}
staticfloatGetAllSalary(void)
{returnallSalary;}
};
floatEmployee:
:
allSalary=0;
voidmain(void)
{
Employeee1("张三",4500);
Employeee2("王五",5200);
Employeee3("李四",2450);
floatall;
all=Employee:
:
GetAllSalary();
cout<<"AllSalary="< } 任务2: 程序设计。 应用类静态数据实现类名对象间的数据访问。 参照任务1,定义一个类,描述某人的姓名和具有的现金数量,此某人有4个子女A、B、C、D,当初父亲具有现金10000元,每年提供给这4个子女的钱分别为1000、500、2000、1800元。 当四个子女访问一次后,父亲还剩多少现金? 设计代码运行如下: #include"stdafx.h" #include usingnamespacestd; #include classpeople { private: charname[30]; floatsalary; staticfloatallSalary; public: people(char*n,floats) { strcpy(name,n); salary=s; allSalary=allSalary-salary; } ~people(void){} staticfloatGetAllSalary(void) {returnallSalary;} }; floatpeople: : allSalary=10000; voidmain(void) { peoplee1("A",1000); peoplee2("B",500); peoplee3("C",2000); peoplee4("D",1800); floatall; all=people: : GetAllSalary(); cout<<"访问一次后还剩现金为: "< } 任务3: 程序调试。 用友元函数计算两点间的距离。 #include"stdafx.h" #include usingnamespacestd; #include classPoint { public: Point(doublexx,doubleyy){x=xx;y=yy;} voidGetxy(); frienddoubleDistance(Point&a,Point&b); private: doublex,y; }; voidPoint: : Getxy() {cout<<"("< doubleDistance(Point&a,Point&b) { doubledx=a.x-b.x; doubledy=a.y-b.y; returnsqrt(dx*dx+dy*dy); } voidmain() { Pointp1(3.0,4.0),p2(6.0,8.0); p1.Getxy(); p2.Getxy(); doubled=Distance(p1,p2); cout<<"Distanceis"< } 调试上述程序,回答以下问题: (1)函数Distance是否可以定义在类外? 答: 不能,友元函数一定要定义在类内。 (2)是否可以用对象调用函数Distance? 答: 不可以,友元函数是直接调用的。 任务4: 程序设计 有一个向量类Vector,包括一个点的坐标位置x和y,设计两个友元函数,实现两个向量的加法和减法运算。 程序设计如下: #include #include classvector { private: doublex,y; public: vector(doublea,doubleb){ x=a; y=b; } frienddoubleb(constvector&s,constvector&s1); frienddoubleb1(constvector&s2,constvector&s3); }; doubleb(constvector&s,constvector&s1){ doubledx=s.x+s1.x; doubledy=s.y+s1.y; cout<<"("< return0; } doubleb1(constvector&s2,constvector&s3){ doublex1=s2.x-s3.x; doubley1=s2.y-s3.y; cout<<"("< return0; } voidmain() { vectorp1(3.0,4.0),p2(6.0,8.0); doubled=b(p1,p2); doubled1=b1(p1,p2); } 任务5: 程序设计。 友元函数的应用。 程序设计: SameValue()函数是类A和类B的友元函数,它用来比较两个类的对象的数据成员value1、value2是否相等,A、B类的对象的数据成员从键盘输入,并用main()进行测试。 程序设计如下: #include"stdafx.h" #include usingnamespacestd; classB; classA { doublex1,y1; public: A(doublex,doubley) { x1=x; y1=y; } friendintsamevalue(A&s,B&ss); }; classB { doublex2,y2; public: B(doublea,doubleb){ x2=a; y2=b; } friendintsamevalue(A&s,B&ss); }; intsamevalue(A&s,B&ss) { if(s.x1==ss.x2&&s.y1==ss.y2) return1; else return0; } voidmain() { doublea,b; cin>>a>>b; Aa1(a,b); doublec,d; cin>>c>>d; Bb1(c,d); inty=samevalue(a1,b1); if(y==1) cout<<"数据相等"< else cout<<"数据不相等"< } 任务6: 程序设计。 容器类的程序设计。 程序设计: 有一个日期类Date,它有私有数据y、m、d,此类的对象作为另一个类的私有成员,用以描述一个人的姓名、出生日期及性别,编写必要的成员函数后在main函数中进行测试。 程序如下: #include"stdafx.h" #include usingnamespacestd; #include classDate { inty,m,d; public: Date(inta,intb,intc) { y=a; m=b; d=c; } voidshow() { cout<<"出生年月是: "< } }; classpeople { charname[15]; Datedate; charsex[6]; public: people(char*n1,inty1,intm1,intd1,char*se): date(y1,m1,d1) { strcpy(name,n1); strcpy(sex,se); } voidshow() { cout<<"姓名是: "< cout<<"性别是: "< } }; voidmain() { peopleF("沧海一声笑",1996,8,15,"男"); Dated(1991,8,15); F.show(); d.show(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 实验 辅导 习题 解答