C++/PTA 计算全班学生C++课程的总成绩和平均成绩

计算全班学生C++课程的总成绩和平均成绩

题目要求

定义一个类Student,记录学生C++课程的成绩。要求使用静态数据成员或静态成员函数计算全班学生C++课程的总成绩和平均成绩。

输入格式:
输入5个不超过100的正整数,作为C++成绩。

输出格式:
在第一行中输出成绩的和,第二行输出平均成绩。

输入样例:
90 80 70 60 50

输出样例:
350
70


method 1

#include<bits/stdc++.h>
using namespace std;
class Student{
    protected:
    int studentscore;
    static int sum;
    static double avg;
    public:
    Student(){};
    Student(int a):studentscore(a){
        sum+=a;
        avg=sum/5;
    };
    void disp(){
        cout<<sum<<endl;
        cout<<avg;
    }
};
int Student::sum=0;
double Student::avg=0;
int main(){
    int score;
    Student *p;
    int count=0;
    for(int i=0;i<5;i++){
        cin>>score;
        p=new Student(score);
    }
    p->disp();
    //system("pause");
    return 0;
}

在 Student 类中,使用了关键字 static 声明了两个静态成员变量 sum 和 avg

在 Student 类的构造函数中,当每次创建一个新的 Student 对象时,将该对象的分数值累加到 sum 变量中,从而统计所有学生的总分。然后通过更新 avg 变量,计算出平均分数。

在 main() 函数中,创建了指向 Student 对象的指针 p,并在 for 循环中动态地创建了 5 个 Student 对象。由于 sum 和 avg 是静态成员变量,因此它们的值可以被所有 Student 对象共享和访问,所以每次创建一个新对象时,都会更新它们的值。

最后,通过指针 p 调用 disp() 函数,输出所有学生的总分和平均分。


method 2

//未使用静态数据成员,但仍能编译通过
#include <iostream>
using namespace std;

class Student {
private:
    int Score[5];
public:
    Student(int score[]) {
        for (int i = 0; i < 5; i++) {
            Score[i] = score[i];
        }   
    }
    void sum() {
        int Sum = 0;
        for (int i = 0; i < 5; i++) {
            Sum += Score[i];
        }       
        cout << Sum << endl;
    }
    void average() {
        double Average = 0.0;
        int Sum = 0; // 新增一个变量保存成绩总和
        for (int i = 0; i < 5; i++) {
            Sum += Score[i];
        }       
        Average = static_cast<double>(Sum) / 5; // 将 Sum 转换为 double 类型进行除法运算
        //计算平均值之前使用 static_cast<double> 强制将其转换为 double 类型,避免计算结果丢失精度
        cout << Average << endl;
    }
};

int main() {
    int b[5];
    for (int j = 0; j < 5; j++) {
        cin >> b[j];    
    }
    Student S(b);   
    S.sum();
    S.average();
    return 0;
}

定义 Student 类,该类具有两个成员函数 sum()average(),分别用于计算5名学生的总分和平均分。

main() 函数中,首先定义一个包含5个元素的整型数组 b,用来存储5门课程的分数数据。然后将 b 数组作为实参传递给 Student 类的构造函数,创建一个名为 SStudent 对象。

定义Student 类的构造函数中,将传入的 score 数组赋值到 Score 数组中,从而完成了学生对象的初始化。

sum() 函数使用 for 循环遍历 Score 数组,将其中每个元素累加到 Sum 变量中,最终输出累加结果。average() 函数也通过 for 循环遍历 Score 数组,将其中每个元素累加到 Sum 变量中,然后将 Sum 转换为 double 类型进行除法运算,计算出5位学生的平均分,并输出结果。


总结

本文使用两种方法计算全班学生C++课程的总成绩和平均成绩。
我是秋说,我们下次见。

posted @ 2023-05-16 22:30  秋说  阅读(362)  评论(0编辑  收藏  举报  来源