【无标题】

实验2

  •  创建一个Score类,完成以下功能:
    • 连续输入多位学生的成绩(成绩=科目A成绩+科目B成绩+科目C成绩);
    • 学生数目可以由用户自定义(默认为2个,最多为100个);
    • 显示每位同学的每科成绩和平均分;
    • 显示每门科目的平均成绩;
    • 对每门成绩进行排序并由高到底显示;
    • 对整个文件进行打包。

代码: 

 

#include<iostream>

using namespace std;

class Score

{

public:

    Score(int stnumber = 2)

    {

         if (stnumber > 100)

             number = 100;

         else number = stnumber;

    }

    void input()

    {

         for (int i = 0; i < number; i++)

         {

             //输入姓名

             cout << "请输入学生姓名:" << endl;

             cin >> name[i];

             //输入学生成绩

             cout << "请输入科目A成绩:" << endl;

             cin >> grade[i][1];

             cout << "请输入科目B成绩:" << endl;

             cin >> grade[i][2];

             cout << "请输入科目C成绩:" << endl;

             cin >> grade[i][3];

         }

    }

    void showallstu()

    {

         for (int i = 0; i < number; i++)

         {

             cout << "姓名:" << name[i] << " 科目A成绩:" << grade[i][1] << " 科目B成绩:" << grade[i][2] << " 科目C成绩:" << grade[i][2] << endl;

         }

    }

    void showstuavg(int m)

    {

         cout << "姓名:" << name[m] << " 平均成绩:" << (grade[m][1] + grade[m][2] + grade[m][3]) / 3 << endl;

    }

    void showavg(int i)

    {

         double all = 0;

         switch (i)

         {

         case 1:

             for (int m = 0; m < number; m++)

             {

                  all += grade[m][1];

             };

             cout << "课程名称:A平均成绩:" << all / number << endl;

             break;

         case 2:

             for (int m = 0; m < number; m++)

             {

                  all += grade[m][2];

             };

             cout << "课程名称:B平均成绩:" << all / number << endl;

             break;

         case 3:

             for (int m = 0; m < number; m++)

             {

                  all += grade[m][3];

             };

             cout << "课程名称:C平均成绩:" << all / number << endl;

             break;

         }

    }

    void rank(int m)

    {

         int temp;

         char tempname[100];

         switch (m)

         {

         case 1:cout << "课程名:A" << endl;

             break;

         case 2:cout << "课程名:B" << endl;

             break;

         case 3:cout << "课程名:C" << endl;

             break;

         }

         for (int i = 0; i < number - 1; i++)

         {

             if (grade[i][m] > grade[i + 1][m])

             {

                  temp = grade[i + 1][m];

                  grade[i + 1][m] = grade[i][m];

                  grade[i][m] = grade[i + 1][m];

                  tempname[100] = name[i + 1][100];

                  name[i + 1][100] = name[i][100];

                  name[i][100] = tempname[100];

             }

         }

         for (int i = number - 1; i > -1; i--)

         {

             cout << "姓名:" << name[i] << " 成绩:" << grade[i][m] << endl;

         }

    }

private:

    int number;

    char name[100][100];

    double grade[100][3];

};

int main()

{

    Score stu;

    stu.input();

    stu.showallstu();

    stu.showstuavg(1);

    stu.showavg(1);

    stu.rank(1);

    getchar();

    getchar();

    return 0;

}

运行结果:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值