成绩分数统计系统的设计

输入学生各科考试成绩,计算每个学生的平均分,输出每名学生的各科考试成绩和个人平均分,计算输出各科目的平均分、最高分、最低分、及格率(自行选择2个输出),按学生总评成绩进行排名并输出排名。(c++ #include<stdio.h>回答)



#include<cstring>
#include<iostream>
#include<map>

using namespace std;

class Stu 
{
    public:
        int id;
        float math;
        float english;
        float chinese;
        float sum;
    
        Stu(float ma,float eng,float ch,float s)
        {
            math = ma;
            english = eng;
            chinese = ch;
            sum = s;
        };
        float pj();
        void print_s(float sum);
        void sum1();
};

float Stu::pj()
{
    float pjsorce = 0;
    pjsorce = (math + english + chinese) / 3;
    return pjsorce;
}

void Stu::print_s(float s)
{
    cout << "各科成绩(数学,英语,语文):" << math << " " << english << " " << chinese << endl;
    cout << "个人平均成绩:" << sum/3 << endl;
}

void Stu::sum1()
{
    sum = math + english + chinese;
}

int main()
{
    Stu s1(86, 56, 70, 0);
    Stu s2(46, 89, 23, 0);
    Stu s3(69, 69, 99, 0);
    Stu s4(56, 99, 99, 0);
    s1.sum1();
    s2.sum1();
    s3.sum1();
    s4.sum1();
    cout << "-----------------------" << endl;
    float sum2 = s1.pj();
    s1.print_s(sum2);
    float sum3 = s2.pj();
    s2.print_s(sum2);
    float sum4 = s3.pj();
    s3.print_s(sum2);
    float sum5 = s4.pj();
    s4.print_s(sum2);
    cout << "-----------------------" << endl;

    // 各科平均分
    float math_a = (s1.math + s2.math + s3.math + s4.math) / 4;
    float english_a = (s1.english + s2.english + s3.english + s4.english) / 4;
    float chinese_a = (s1.chinese + s2.chinese + s3.chinese + s4.chinese) / 4;
    cout << "数学平均分:" << math_a << endl;
    cout << "英语平均分:" << english_a << endl;
    cout << "语文平均分:" << chinese_a << endl;
    cout << "-----------------------" << endl;

    //最高分 & 最低分
    float m[4] = {s1.math,s2.math,s3.math,s4.math};
    float e[4] = {s1.english,s2.english,s3.english,s4.english};
    float c[4] = {s1.chinese,s2.chinese,s3.chinese,s4.chinese};
    float math_max = m[0], math_min = m[0];
    float english_max = e[0], english_min = e[0];
    float chinese_max = c[0], chinese_min = c[0];
    float ma = 0, en = 0, ch =0;    // 及格率
    for(int i=0; i<4; i++)
    {
        // 数学
        if(m[i] > math_max && i != 0)
        {
            math_max = m[i];
        }
        if(m[i] < math_min && i != 0)
        {
            math_min = m[i];
        }
        if(m[i] >= 60)
        {
            ma++;
        }
        // 英语
        if(e[i] > english_max && i != 0)
        {
            english_max = e[i];
        }
        if(e[i] < english_min && i != 0)
        {
            english_min = e[i];
        }
        if(e[i] >= 60)
        {
            en++;
        }
        // 语文
        if(c[i] > chinese_max && i != 0)
        {
            chinese_max = c[i];
        }
        if(c[i] < chinese_min && i != 0)
        {
            chinese_min = c[i];
        }
        if(c[i] >= 60)
        {
            ch++;
        }
    }
    ma = ma / 4;
    en = en / 4;
    ch = ch / 4;
    cout << "数学最高分:" << math_max << ",最低分:" << math_min << ",及格率:" << ma << endl;
    cout << "英语最高分:" << english_max << ",最低分:" << english_min << ",及格率:" << en << endl;
    cout << "语文最高分:" << chinese_max << ",最低分:" << chinese_min << ",及格率:" << ch << endl;
    cout << "-----------------------" << endl;
    // 排名
    

    float sum[4] = {s1.sum,s2.sum,s3.sum,s4.sum};
    for(int i=0; i<4; i++)
    {
        for(int j=i+1; j < 4; j++)
        {
            if(sum[i] <= sum[j])
            {
                float temp = sum[i];
                sum[i] = sum[j];
                sum[j] = temp;
            }
        }
    }
    cout << "排名(高到低): ";
    for(int i=0; i<4; i++)
    {
        cout << sum[i] << " "; 
    }
    cout << endl;
    cout << "-----------------------" << endl;

    return 0;
}

img

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^