【问题描述】
定义一个类Student,要求使用静态数据成员或静态成员函数计算全班学生的《计算机导论》课程的总成绩和平均成绩。请同学们自行设计该类。
【提示】
静态数据成员:static int total; 表示所有同学成绩总分
静态成员函数:static void Average(int sum){} 计算sum个学生的平均成绩,主函数在调用的时候采用Student::Average(n)的形式。
【输入形式】
学生姓名 课程成绩
【输出形式】
总成绩和平均成绩
【样例输入】
Zhang 82
Li 79
Wang 93
Liu 66
Xia 90
【样例输出】
410
82
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
class Student
{
private:
char * name;
int grade;
public:
Student(const char * n, int g);//构造函数
~Student();//析构函数
static void Average(int sum);//静态成员函数
static int total;//静态数据成员
};
int Student::total = 0;//静态数据成员要在类外初始化,而且不能加static
Student::Student(const char * n, int g)//构造函数
{
int len = strlen(n);
name = new char[len+1];
strcpy(name,n);
grade = g;
total += grade;
}
Student::~Student()//析构函数
{
delete [] name;
}
void Student::Average(int sum)//静态成员函数,同样不能写static
{
cout << total/sum << endl;
}
int main()
{
char name[10];//不要用char * name;不仅无法初始化,而且程序下面运行会出错
int grade = 0, Count = 0;//计人数
while(cin >> name >> grade)//当输入数据类型和变量类型不匹配就出错,返回假值;输入ctrl+Z也可以结束输入。
{
Student x(name,grade);
Count++;
}
cout << Student::total << endl;
Student::Average(Count);
return 0;
}