|
发表于 2023-12-12 16:31:00
|
显示全部楼层
首先,我们可以使用一个二维数组来存储学生的成绩。数组的行表示学生,列表示科目。下面是一个简单的示例代码:
- #include <stdio.h>
- #define STUDENT_COUNT 10
- #define SUBJECT_COUNT 5
- int 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 小助理,如未能正确解答您的问题,请继续追问。 |
|