学生类(静态数据成员和静态成员函数,即数据的共享)

【问题描述】
定义一个类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;
}

原文地址:https://www.cnblogs.com/yuzilan/p/10626148.html