求一道程序设计题的解题程序!!!用C++程序编程:学生成绩统计
求程序!!!用C++程序编程:学生成绩统计要求:(1)输入10位学生成绩,如成绩不在0-100之间,给出错误提示。(2)逆序输出10位学生成绩。...
求程序!!!用C++程序编程:学生成绩统计
要求:
(1) 输入10位学生成绩,如成绩不在0-100之间,给出错误提示。
(2)逆序输出10位学生成绩。 展开
要求:
(1) 输入10位学生成绩,如成绩不在0-100之间,给出错误提示。
(2)逆序输出10位学生成绩。 展开
1个回答
展开全部
#include <iostream>
using namespace std;
const unsigned int g_nStudents = 10; // 学生总数
// 学生成绩统计类
class StudentsScoreStatistics
{
public:
StudentsScoreStatistics() { Clear(); }
// 重置学生分数
void Clear()
{
for (int i = 0; i < g_nStudents; i++)
{
mScores[i] = 0.0;
}
}
// 设置学生分数
bool InitScore(double aCore, int aIndex)
{
if (aCore < 0.0 || aCore > 100.0)
return false;
mScores[aIndex] = aCore;
return true;
}
// 排序
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;
}
}
// 得到所有学生分数
const double* GetScores() const
{
return mScores;
}
private:
double mScores[g_nStudents]; // 学生分数数组
};
int main()
{
StudentsScoreStatistics stOperator;
// 输入成绩
cout << "请输入" << g_nStudents << "位学生成绩:" << endl;
for (int i = 0; i < g_nStudents; i++)
{
double dScore = 0;
cin >> dScore;
if (!stOperator.InitScore(dScore, i))
{
cout << "成绩输入错误!请重新输入:" << endl;
i--;
}
}
// 逆序输出
stOperator.Sort();
cout << "排序后的学生成绩为:" << endl;
for (int i = 0; i < g_nStudents; i++)
{
cout << *(stOperator.GetScores() + i) << " ";
}
cout << endl;
cout << endl;
system("pause");
return 0;
}
运行结果:
追问
你好,我这边输入程序之后程序显示程序中两处的 for (int i = 0; i < g_nStudents; i++) 这一步程序的i有问题,无法运行,得怎么改呢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询