(1)计算每个学生的总分和平均分;
(2)按总分成绩由高到低排出成绩的名次;
(3)打印出名次表,表格内包括学生编号、各科分数、总分和平均分;
(4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。
这个题C++程序设计基础第六版相对应的实验课的题目(完整的代码放在下面啦)。
我没有用数据结构,只用了数组,想分享的是给学生排名的方法。
具体情境:我发现如果要按照总成绩用冒泡给学生排名的话,会造成只交换了总成绩的情况。因为当时我没学数据结构,而且也没学到用指针计算排名,所以想到了下面的方法。
(1)创建数组+给数组赋值+计算平均成绩与总成绩
int grades[30][3]{};
void as_grades()
{
srand((unsigned)time(NULL));
for (int i = 0; i < 30; i++)
{
for (int j = 0; j < 3; j++)
{
grades[i][j] = rand() % (100 - 60 + 1) + 60;
}
}
}
这一段代码是随机生成60-100范围内的数字,因为题目中没有给出学生成绩,所以我要自己给学生的成绩赋值。
int sum_grades[30]{};
double ave_grades[30]{};
int sum(int a, int b, int c)
{
int d = 0;
d = a + b + c;
return d;
}
double average(double a, double b, double c)
{
double d = 0;
d = (a + b + c) / 3;
return d;
}
void as_sum()
{
for (int i = 0; i < 30; i++)
{
int j = 0; int a = j + 1; int b = j + 2;
sum_grades[i] = sum(grades[i][j], grades[i][a], grades[i][b]);
}
}
void as_average()
{
for (int i = 0; i < 30; i++)
{
int j = 0; i