#include <iostream>
#include <cstdlib>
using namespace std;
int strlen(const char s[]){
int len = 0;
while (s[len]){
len++;
}
return len; // 返回数组str中首个值为null的元素的下标值
}
char* strcpy(char *p, const char *s){
char *t = p;
while (*p++ = *s++){
}
return t;
}
class Student {
private:
int m_id; // 学生编号
double m_score; // 学生分数
char *m_name;
// 统计学生个数的静态成员变量
static int m_count;
// 统计学生总分数的静态成员变量
static double sum_score;
public:
Student(int id, const char *name ,double score) {
// 创建一个学生
m_id = id;
m_score = score;
m_count++; // 对创建的学生对象的人数进行累加
sum_score += score; // 对创建的学生对象的分数进行累加
//给姓名赋值
int len = strlen(name);
m_name = (char*)malloc(len + 1);
strcpy(m_name, name);
}
static int getCount() { // 提供一个访问学生人数的静态方法
return m_count;
}
static double getAvg() { // 提供一个访问平均分的静态方法
return sum_score / m_count;
}
int getId(){
return m_id;
}
char* getName(){
return m_name;
}
double getScore(){
return m_score;
}
~Student() {
m_count--; // 每析构一个对象,数量减去一
sum_score -= m_score; // 析构一个对象,减去对象对应的学生分数
if (m_name != NULL) {
free(m_name); // 消除占用空间
m_name = NULL;
}
}
};
int Student::m_count = 0; // 对静态变量进行初始化
double Student::sum_score = 0.0; // 对静态变量进行初始化
int main(){
Student *s1 = new Student(1, "vvcat1", 88);
Student *s2 = new Student(2, "vvcat2", 95);
Student *s3 = new Student(3, "vvcat3", 99);
Student *s4 = new Student(4, "vvcat4", 77);
Student *s5 = new Student(5, "vvcat5", 96);
cout << "----------学生成绩列表-------------" << endl;
cout << "编号 姓名 成绩" << endl;
cout << s1 -> getScore();
cout << " ";
cout << s1 -> getName();
cout << " ";
cout << s1 -> getScore();
cout << endl;
cout << s2 -> getScore();
cout << " ";
cout << s2 -> getName();
cout << " ";
cout << s2 -> getScore();
cout << endl;
cout << s3 -> getScore();
cout << " ";
cout << s3 -> getName();
cout << " ";
cout << s3 -> getScore();
cout << endl;
cout << s4 -> getScore();
cout << " ";
cout << s4 -> getName();
cout << " ";
cout << s4 -> getScore();
cout << endl;
cout << s5 -> getScore();
cout << " ";
cout << s5 -> getName();
cout << " ";
cout << s5 -> getScore();
cout << endl;
cout << "-----------------------------------" << endl;
cout << "学生总人数:" << Student::getCount() << endl;
cout << "学生的平均分:" << Student::getAvg() << endl;
// 调用析构函数
delete s5;
delete s4;
delete s3;
delete s2;
delete s1;
return 0;
}
C++ 使用静态变量和静态方法统计学生分数和学生个数
最新推荐文章于 2023-05-25 17:00:13 发布