cout<<"正方形的面积为:
"<
}
voidmain()
{
squarem(10,10,5);
();
();
}
12.把定义平面直角坐标系上的一个点的类Point作为基类,派生出描述一条直线的类Line,再派生出一个矩形类Rect。
要求成员函数能求出两点间的距离,矩形的周长和面积等。
设计一个测试程序,并构造完整的程序。
答:
#include
#include
usingnamespacestd;
classPoint{
public:
Point(intx=0,inty=0)
{
this->x=x;
this->y=y;
}
public:
intx,y;
};
classLine:
publicPoint
{
public:
Line(intx1=0,inty1=0,intx2=0,inty2=0)
:
a(x1,y1),b(x2,y2)
{}
doubleLength(){
ints=intt=returnsqrt(s*s+t*t);
}
private:
Pointa,b;
};
classRect:
publicLine{
public:
Rect(intx1,inty1,intx2,inty2):
l1(x1,y1,x1,y2),l2(x1,y1,x2,y1)假设某销售公司有销售经理和销售员工,月工资的计算办法是:
销售经理的固定月薪为8000元并提取销售额的5/1000作为工资;销售员工只提取销售额的5/1000作为工资。
编一程序,定义一个基类Employee,它包含三个数据成员number、name和salary,以及用于输入编号和姓名的构造函数。
由Employee类派生Salesman类,再由Salesman类派生Salesmanager类。
Salesman类包含两个新数据成员commrate和sales,还包含用于输入销售额并计算销售员工工资的成员函数pay和用于输出的成员函数print。
Salesmanager类包含新数据成员monthlypay,以及用于输入销售额并计算销售经理工资的成员函数pay、用于输出的成员函数print()。
在main函数中,测试你的类结构,求若干个不同员工的工资。
答:
#include
usingnamespacestd;
classemployee
{public:
employee()
{cout<<"编号:
";cin>>number;
cout<<"姓名:
";cin>>name;
salary=0;
}
protected:
charnumber[5];
charname[10];
doublesalary;};
classsalesman:
publicemployee
{public:
salesman(){commrate=;}
voidpay()
{cout<";
cin>>sales;
salary=sales*commrate;
}
voidprint()
{cout<<"销售员:
"<"<"<protected:
doublecommrate;
doublesales;
};
classsalesmanager:
publicsalesman
{public:
salesmanager()
{monthlypay=8000;
commrate=;
}
voidpay()
{cout<";
cin>>sales;
salary=monthlypay+sales*commrate;
}
voidprint()
{cout<<"销售经理:
"<"<"<private:
doublemonthlypay;
};
intmain()
{salesmanobj1;
();
();
salesmanagerobj2;
();
();
}
14.编写一个程序实现那一个班级学生的学期成绩管理。
个人信息类Person的数据成员有:
姓名,年龄,性别;课程类Course的数据成员有:
课程名,学分,成绩;
学生类Student从Person类派生,并增加数据成员:
学号,Course对象数据成员数组(大小为8),总成绩,总学分和平均成绩;
班级类Class类的数据成员有:
Student类对象成员数组(大小由构造函数确定),班号,班级人数等。
要求:
(1)本班级Class类的对象成员数组需要在构造函数中用new动态分配内存空间,在析构函数中释放。
在类Class中添加成员函数Seek,通过学号查找并输出该学生的全部信息。
(2)构造三个学生的数据,每个学生都有三门课程的成绩,输入并显示这些数据。
(3)根据类的需要添加适当的其他成员,编写完整的程序并测试。
答:
#include<>
#include<>
classPerson{
public:
Person(char*name,intage,charsex='M')
{
strncpy(this->name,name,20);
this->age=age;
this->sex=sex;
}
voidshow(){
cout<<"学生的名字是:
"<cout<<"学生的年龄是:
"<cout<<"学生的性别是:
"<}
private:
charname[20];
intage;
charsex;
};
classCourse{
public:
Course(){
cout<<"请输入课程名,学分和分数"<cin>>coursename>>credit>>score;
}
public:
charcoursename[20];
floatscore;
floatcredit;
};
classStudent:
Person{
public:
Student(char*name="NULL",intage=0,charsex='M',char*no="0"):
Person(name,age,sex),Course()
{
strncpy(this->no,no,20);
}
doubleMscoresum()
{
scoresum=0;
for(inti=0;i<2;i++)
scoresum+=Cour[i].score;
returnscoresum;
}
doubleMcreditsum()
{
creditsum=0;
for(inti=0;i<2;i++)
creditsum+=Cour[i].credit;
returncreditsum;
}
voidShow(){
Person:
:
show();
cout<<"学号为:
"<cout<<"总的学分为:
"<cout<<"总的成绩为:
"<}
public:
charno[20];
CourseCour[2];
floatscoresum;
floatcreditsum;
};
classClass{
private:
Student*stu;
charclassno[20];
intn;o)
stu[i].Show();
break;
}
if(i==8)
cout<<"找不到该学生"<}
voidShow(){
cout<<"班级的学号为"<";
for(inti=0;istu[0].Show();
}
};
voidmain(){
Classcla(5,"1");
();
//Studentstu("Wang",16,'F',"4");
//();
}