静态数据成员统计某门课程参加考试的学生总数和学生成绩的平均值

用vc++ 静态数据成员统计某门课程参加考试的学生总数和学生成绩的平均值 谢谢

img



#include <iostream>

using namespace std;

class Course {
public:
    Course() {}
    
    void addScore(double score) {
        // 添加学生成绩,并更新静态数据成员
        scoreSum += score;
        numStudents++;
    }
    
    static int numStudents; // 学生总数
    static double scoreSum; // 学生成绩的总和
};

// 在类外初始化静态数据成员
int Course::numStudents = 0;
double Course::scoreSum = 0.0;

int main() {
    Course course;
    
    // 添加一些学生成绩供测试
    course.addScore(85);
    course.addScore(92.5);
    course.addScore(78);
    course.addScore(89);
    
    cout << "参加考试的学生总数:" << Course::numStudents << endl;
    cout << "学生成绩的平均值:" << Course::scoreSum / Course::numStudents << endl;
    
    return 0;
}
#include <iostream>
#include <vector>
using namespace std;
class Exam {
public:
    Exam(int score) : score_(score) {
        ++count_;
        sum_ += score_;
    }

    static int getCount() {
        return count_;
    }

    static double getAverage() {
        return static_cast<double>(sum_) / count_;
    }

private:
    int score_;
    static int count_;
    static int sum_;
};

int Exam::count_ = 0;
int Exam::sum_ = 0;

int main() {
    vector<Exam> exams;
    exams.emplace_back(80);
    exams.emplace_back(90);
    exams.emplace_back(70);

    cout << "Total number of students: " << Exam::getCount() << endl;
    cout << "Average score: " << Exam::getAverage() << endl;
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/161692
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:VC++单文档分割窗口、在视图中添加控件,并响应该控件的事件
  • 除此之外, 这篇博客: 对VC++工程编译过程的梳理中的 编译预处理阶段 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 读取源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理;

    • 将所有的“#define”指令删除,并且将宏定义展开;
    • 处理所有的条件编译指令;
    • 处理#include预编译指令,将被包含的头文件插入到预编译指令的位置。这可能是一个递归操作,如果被包含的头文件中又包含其他头文件;
    • 删除所有的注释;
    • 添加行号和文件标识;
    • 保留所有的#program编译器指令,后续的编译步骤中要用到该指令。
    • 经过预编译的处理以后,头文件被合并到源文件中,并且所有的宏定义都被展开。
  • 您还可以看一下 大雄老师的从逆向视角看VC++面向对象特征 课程中的 逆向视角看析构函数小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以解决该问题。

    在C++中,静态数据成员是指某个类的所有对象都共享同一个变量(也可以是数组或指针)的成员。在本场景中,我们可以使用静态数据成员来实现对某门课程参加考试的学生总数和学生成绩平均值的统计。

    具体步骤如下:

    1. 设计一个类,用来存储某门课程的成绩信息,同时定义一个静态数据成员来记录总人数和总成绩。
    class Course {
    private:
        int score;
        static int totalScore;
        static int studentCount;
    public:
        Course(int s) : score(s) {
            totalScore += s;
            studentCount++;
        }
        static double averageScore() {
            return double(totalScore) / studentCount;
        }
    };
    

    在上述代码中,通过类的构造函数将每个学生的成绩累加到静态数据成员中,同时记录学生总人数。静态函数averageScore()可以根据静态数据成员计算课程的平均分。

    1. 在主函数中,定义多个Course类的对象,演示如何统计学生总人数和课程平均分。
    #include <iostream>
    using namespace std;
    
    int Course::totalScore = 0;
    int Course::studentCount = 0;
    
    int main() {
        Course c1(80);
        Course c2(90);
        Course c3(70);
        // 输出学生总人数和课程平均分
        cout << "Total number of students: " << Course::studentCount << endl;
        cout << "Average score: " << Course::averageScore() << endl;
        return 0;
    }
    

    在上述代码中,不同的Course对象会自动调用构造函数,将学生成绩累加到静态数据成员中。在主函数中,可以输出学生总人数和课程平均分。

    总体来说,使用静态数据成员来统计所需的数据可以简化代码,并且可以保证所有对象共享同一个数据集,避免了数据重复问题。