设计一个学生类Student,包含学生学号(最长10位)、姓名(不用支持中文最长12位)、三门课程成绩(成绩是单精度实数类型)等基本信息,
计算每门课程学生的平均成绩。
需实现Student的display成员函数,依次输出学号 姓名 和三门课的成绩,每个输出以空格隔开
成员函数 average1 ,average2 ,average3 ,分别返回三门课的平均成绩。
Student类的使用方法如下所示,在你的代码中除了实现Student类,还需引入以下代码:
int main(){
Student *stu1,*stu2,*stu3;
char name1[10],name2[10],name3[10];
char num1[12],num2[12],num3[12];
int grade1[3],grade2[3],grade3[3];
cin>>name1>>num1>>grade1[0]>>grade1[1]>>grade1[2];
cin>>name2>>num2>>grade2[0]>>grade2[1]>>grade2[2];
cin>>name3>>num3>>grade3[0]>>grade3[1]>>grade3[2];
stu1 = new Student(name1,num1,grade1[0],grade1[1],grade1[2]);
stu2 = new Student(name2,num2,grade2[0],grade2[1],grade2[2]);
stu3 = new Student(name3,num3,grade3[0],grade3[1],grade3[2]);
stu1->display();
stu2->display();
stu3->display();
cout<average1()<
cout<average2()<
cout<average3()<
return 0;
}
上述代码执行时
输入:
200906294 LiWeiwei 88 75 91 200902164 ChenHanfu 86 78 93 200908079 ZhanGaolin 94 69 97
输出:
200906294 LiWeiwei 88 75 91回车
200902164 ChenHanfu 86 78 93回车
200908079 ZhanGaolin 94 69 97回车
The average grade of course1:89.33回车
The average grade of course2:67.33回车
The average grade of course3:93.67回车
1 #include
2 #include
3 #include
4 using namespacestd;5 classStudent{6 stringname, num;7 floatgrade1,grade2,grade3;8 static floatave1,ave2,ave3;9 static intcount;10 public:11 Student(string name,string num, float grade1,float grade2,floatgrade3){12 this->name =name;13 this->num =num;14 this->grade1 =grade1;15 this->grade2 =grade2;16 this->grade3 =grade3;17 count++;18 ave1 +=grade1;19 ave2 +=grade2;20 ave3 +=grade3;21 }22 voiddisplay(){23 cout<
40 intmain()41 {42 Student *stu1,*stu2,*stu3;43 char name1[10],name2[10],name3[10];44 char num1[12],num2[12],num3[12];45 int grade1[3],grade2[3],grade3[3];46
47 cin>>name1>>num1>>grade1[0]>>grade1[1]>>grade1[2];48 cin>>name2>>num2>>grade2[0]>>grade2[1]>>grade2[2];49 cin>>name3>>num3>>grade3[0]>>grade3[1]>>grade3[2];50
51 stu1 = new Student(name1,num1,grade1[0],grade1[1],grade1[2]);52 stu2 = new Student(name2,num2,grade2[0],grade2[1],grade2[2]);53 stu3 = new Student(name3,num3,grade3[0],grade3[1],grade3[2]);54
55 stu1->display();56 stu2->display();57 stu3->display();58
59 cout<average1()<average2()<average3()<
21、形状类
已知基类ShapeFactory的声明如下:
const float pi=3.1416;
class ShapeFactory
{
public:
ShapeFactory(){};
virtual ~ShapeFactory(){};
virtual float Circumstance(){return 0;};
}
ShapeFactory *Create(float a,float b,float c);
ShapeFactory *Create(float a,float b,float c,float d);
ShapeFactory *Create(float r);
请写出三角形(Triangle)、四边形(Quadrangle)、圆形(Circle)三个派生类,构造函数分别传入三边/四边/半径的长度(不用检查是否符合三角形、矩形、圆的条件,没有异常输出),重写出求周长的函数(Circumstance函数)。
然后实现基类的Create函数,这里重载的三个Create函数,分别生成三角形、四边形、圆形的对象。
比如三角形类为Triangle:
ShapeFactory * ShapeFactory::Create(float a,float b,float c)
{
ShapeFactory *p=new Triangle(a,b,c);
return p;
}
如果三角形输入的三边长度是 3 4 5,四边形输入的四条边的长度是2 3 4 7,圆的半径是3,则要求程序运行能够得到如下的提示和输出: