设计小的成绩管理系统,具体功能包括:1.建立一个二维数组,保存20名学生的5门成绩,(其中,学生是行,课程是列)2.打印每名学生的总成绩和平均成绩3.打印每门课程的总成绩和平均成绩4.按总成绩由高到低打印每名学生的成绩5.打印不及格学生的情况
#include <stdio.h>
#define ROWS 20
#define COLS 5
int main()
{
int scores[ROWS][COLS];
int student_total[ROWS] = {0}; // 每个学生的总成绩
float student_avg[ROWS] = {0}; // 每个学生的平均成绩
int subject_total[COLS] = {0}; // 每门课程的总成绩
float subject_avg[COLS] = {0}; // 每门课程的平均成绩
int i, j;
// 输入每个学生的成绩
printf("请输入20名学生的5门成绩(每门课程以空格隔开):\n");
for (i = 0; i < ROWS; i++) {
printf("学生%d: ", i+1);
for (j = 0; j < COLS; j++) {
scanf("%d", &scores[i][j]);
student_total[i] += scores[i][j];
subject_total[j] += scores[i][j];
}
student_avg[i] = (float)student_total[i] / COLS;
}
for (j = 0; j < COLS; j++) {
subject_avg[j] = (float)subject_total[j] / ROWS;
}
// 打印每名学生的总成绩和平均成绩
printf("\n每名学生的总成绩和平均成绩:\n");
for (i = 0; i < ROWS; i++) {
printf("学生%d 总成绩:%d 平均成绩:%.2f\n", i+1, student_total[i], student_avg[i]);
}
// 打印每门课程的总成绩和平均成绩
printf("\n每门课程的总成绩和平均成绩:\n");
for (j = 0; j < COLS; j++) {
printf("课程%d 总成绩:%d 平均成绩:%.2f\n", j+1, subject_total[j], subject_avg[j]);
}
// 按总成绩由高到低打印每名学生的成绩
printf("\n按总成绩由高到低打印每名学生的成绩:\n");
for (i = 0; i < ROWS; i++) {
int max_total = student_total[i];
int max_index = i;
for (j = i+1; j < ROWS; j++) {
if (student_total[j] > max_total) {
max_total = student_total[j];
max_index = j;
}
}
if (max_index != i) { // 交换元素
int temp_total = student_total[i];
student_total[i] = student_total[max_index];
student_total[max_index] = temp_total;
float temp_avg = student_avg[i];
student_avg[i] = student_avg[max_index];
student_avg[max_index]