各位大神请留步,小弟在这里求程序!!用C++编程:学生成绩统计,

各位大神请留步,小弟在这里求程序!!用C++编程:学生成绩统计
要求:
(1)输入10位学生成绩,按降序进行排序;
(2) 计算平均成绩;
(3) 分别统计大于平均数、小于平均数的学生人数;
(4) 将(1)、(2)、(3)结果输出。
谢谢大家!

#include <iostream>
using namespace std;
const unsigned int g_nStudents = 10;  // 学生总数
// 学生成绩统计类
class StudentsScoreStatistics
{
public:
 StudentsScoreStatistics() { Clear(); }
 // 设置学生分数
 void SetScore(double aCore, int aIndex)
 {
  if (aCore < 0.0 || aCore > 100.0)
   return;
  if (aIndex < 0 || aIndex > g_nStudents - 1)
   return;
  mScores[aIndex] = aCore;
 }
 // 排序
 void Sort()
 {
  // 采用插入排序
  for (int i = 1; i < g_nStudents; i++)
  {
   double nCurrent = mScores[i];
   int j = i - 1;
   while (j >= 0 && mScores[j] < nCurrent)
   {
    mScores[j + 1] = mScores[j];
    j--;
   }
   mScores[j + 1] = nCurrent;
  }
 }
 // 得到平均分
 double GetAverage() const
 {
  double dTotal = 0.0;
  for (int i = 0; i < g_nStudents; i++)
   dTotal += mScores[i];
  return (dTotal / g_nStudents);
 }
 // 得到低于平均分的学生数
 int GetStudentsBelowAverage() const
 {
  int nResult = 0;
  double dAverage = GetAverage();
  for (int i = 0; i < g_nStudents; i++)
  {
   if (mScores[i] < dAverage)
    nResult++;
  }
  return nResult;
 }
 // 得到高于平均分的学生数
 int GetStudentsAboveAverage() const
 {
  int nResult = 0;
  double dAverage = GetAverage();
  for (int i = 0; i < g_nStudents; i++)
  {
   if (mScores[i] > dAverage)
    nResult++;
  }
  return nResult;
 }
 // 得到所有学生分数
 const double* GetScores() const
 {
  return mScores;
 }
 // 重置学生分数
 void Clear()
 {
  for (int i = 0; i < g_nStudents; i++)
  {
   mScores[i] = 0.0;
  }
 }
private:
 double mScores[g_nStudents];   // 学生分数数组
};
int main()
{
 StudentsScoreStatistics stOperator;
 // 输入成绩
 cout << "请输入" << g_nStudents << "位学生成绩:" << endl;
 for (int i = 0; i < g_nStudents; i++)
 {
  double dScore = 0.0;
  cin >> dScore;
  stOperator.SetScore(dScore, i);
 }
 cout << endl;
 // 排序并输出
 stOperator.Sort();
 cout << "排序后的学生成绩为:" << endl;
 for (int i = 0; i < g_nStudents; i++)
 {
  cout << *(stOperator.GetScores() + i) << "    ";
 }
 cout << endl;
 // 平均成绩
 cout << "平均成绩为:" << stOperator.GetAverage() << endl;
 // 大于平均成绩的学生数
 cout << "成绩高于平均人数为:" << stOperator.GetStudentsAboveAverage() << endl;
 // 小于平均成绩的学生数
 cout << "成绩低于平均人数为:" << stOperator.GetStudentsBelowAverage() << endl;
 cout << endl;
 system("pause");
    return 0;
}

运行结果:

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-06-06
你好!程序什么时间要追问

这两天吧

本回答被提问者采纳
相似回答