首先,我们可以使用一个二维数组来存储学生的成绩。数组的行表示学生,列表示科目。下面是一个简单的示例代码:#include <stdio.h>#define STUDENT_COUNT 10#define SUBJECT_COUNT 5int scores[STUDENT_COUNT][SUBJECT_COUNT];// 输入学生成绩void inputScores() { printf("请输入学生成绩:\n"); for (int i = 0; i < STUDENT_COUNT; i++) { printf("请输入第%d个学生的%d门课成绩:\n", i + 1, SUBJECT_COUNT); for (int j = 0; j < SUBJECT_COUNT; j++) { scanf("%d", &scores[i][j]); } }}// 计算每个学生的平均分void calcStudentAverage() { for (int i = 0; i < STUDENT_COUNT; i++) { int sum = 0; for (int j = 0; j < SUBJECT_COUNT; j++) { sum += scores[i][j]; } printf("第%d个学生的平均分为:%f\n", i + 1, (float)sum / SUBJECT_COUNT); }}// 计算每门课的平均分void calcSubjectAverage() { for (int j = 0; j < SUBJECT_COUNT; j++) { int sum = 0; for (int i = 0; i < STUDENT_COUNT; i++) { sum += scores[i][j]; } printf("第%d门课的平均分为:%f\n", j + 1, (float)sum / STUDENT_COUNT); }}// 找出最高分数所对应的学生和课程void findHighestScore() { int maxScore = scores[0][0]; int maxStudent = 0; int maxSubject = 0; for (int i = 0; i < STUDENT_COUNT; i++) { for (int j = 0; j < SUBJECT_COUNT; j++) { if (scores[i][j] > maxScore) { maxScore = scores[i][j]; maxStudent = i; maxSubject = j; } } } printf("最高分数为:%d,对应的学生为:%d,对应的课程为:%d\n", maxScore, maxStudent + 1, maxSubject + 1);}int main() { inputScores(); calcStudentAverage(); calcSubjectAverage(); findHighestScore(); return 0;}
这个例子使用了全局的二维数组`scores`来存储学生成绩。在`inputScores`函数中,我们使用嵌套循环逐一输入学生的成绩。在`calcStudentAverage`函数中,我们按行计算每个学生的平均分,并输出结果。在`calcSubjectAverage`函数中,我们按列计算每门课的平均分,并输出结果。在`findHighestScore`函数中,我们使用选择法找到最高分数所对应的学生和课程,并输出结果。
希望这个示例代码能帮助你理解如何用C语言实现你的需求。如果还有其他问题,请随时提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |