定义学生类:
(1)有平时(int)、期末成绩(int)、组成比例(float)三个私有数据成员;
(2)有成员函数setProp,根据键盘输入,设置组成比例,取值在0到1之间,比如0.4,则表示成绩=平时40%+期末60%;
(3)有计算并输出成绩函数compScore,根据组成比例计算并输出成绩。
定义教师类:
(1)有私有数据成员stu,是学生对象指针;
(2)有构造函数,带整型参数,以其值为大小创建学生对象数组,用stu指向;
(3)有成员函数assign,参数为数组下标,用于为一个学生对象设置平时、期末成绩。
(4)有成员函数show,参数为数组下标,用于调用一个学生对象的compScore函数。
main函数中:
(1)在不定义学生对象的情况下,调用学生类的setProp函数,键盘输入并设置组成比例;
(2)输入学生数,由此定义教师对象。
(3)调用assign,为数组中每个学生对象给平时、期末成绩,两个成绩由键盘输入;
(4)调用compScore,逐个计算并输出每个学生的成绩,以空格隔开。
举例1:
输入:0.4 3 70 90 60 80 55 88
输出:82 72 74.8
举例2:
输入:0.5 4 70 90 60 80 55 88 66 77
输出:80 70 71.5 71.5
#include <iostream>
using namespace std;
class Student
{
private:
int a;
int b;
static float c;
public:
static void setProp() //访问静态成员
{
cin>>c;
}
void comScore(int no) //计算成绩并输出
{
float g;
g=a*c+b*(1-c);
cout<<g<<" ";
}
void getter(int x,int y) //访问成绩函数
{
a=x;
b=y;
}
};
class Teacher
{
private:
Student* stu;
public:
Teacher(int num) //建立学生列表
{
stu=new Student[num];
}
void assign(int no) //设置成绩
{
int x,y;
cin>>x>>y;
this->stu[no].getter(x,y);
}
void show(int no)
{
stu[no].comScore(no);
}
~Teacher()
{
delete []stu;
}
};
float Student::c=0; //静态成员访问需要初始化
int main(){
Student::setProp(); //输入成绩比例
int num,i;
cin>>num;
Teacher T(num); //建立老师类对象
for(i=0;i<num;i++){
T.assign(i);
}
for(i=0;i<num;i++){
T.show(i);
}
return 0;
}
初学者的记录,双向的友元函数不太会用,希望得到指点