c语言数组输入五个学生四门功课的成绩,然后求出:(1)每个学生的总分(2)每门课程的平均分(3)输出总分最高的学生的姓名和总分数
时间: 2024-05-03 22:19:15 浏览: 124
以下是实现以上功能的C语言代码:
```c
#include <stdio.h>
#include <string.h>
#define STUDENT_NUM 5
#define COURSE_NUM 4
int main() {
char name[STUDENT_NUM][20];
int score[STUDENT_NUM][COURSE_NUM];
int total_score[STUDENT_NUM];
float course_avg[COURSE_NUM];
// 输入学生姓名和成绩
for (int i = 0; i < STUDENT_NUM; i++) {
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", name[i]);
for (int j = 0; j < COURSE_NUM; j++) {
printf("请输入%s的第%d门课的成绩:", name[i], j + 1);
scanf("%d", &score[i][j]);
}
}
// 计算每个学生的总分和每门课程的平均分
memset(total_score, 0, sizeof(total_score));
memset(course_avg, 0, sizeof(course_avg));
for (int i = 0; i < STUDENT_NUM; i++) {
for (int j = 0; j < COURSE_NUM; j++) {
total_score[i] += score[i][j];
course_avg[j] += (float)score[i][j] / STUDENT_NUM;
}
}
// 输出每个学生的总分和每门课程的平均分
printf("每个学生的总分如下:\n");
for (int i = 0; i < STUDENT_NUM; i++) {
printf("%s的总分是%d\n", name[i], total_score[i]);
}
printf("每门课程的平均分如下:\n");
for (int i = 0; i < COURSE_NUM; i++) {
printf("第%d门课的平均分是%.2f\n", i + 1, course_avg[i]);
}
// 找出总分最高的学生
int max_score = -1;
int max_index = -1;
for (int i = 0; i < STUDENT_NUM; i++) {
if (total_score[i] > max_score) {
max_score = total_score[i];
max_index = i;
}
}
printf("总分最高的学生是%s,总分是%d\n", name[max_index], max_score);
return 0;
}
```
这个代码使用了二维数组来存储学生的成绩,一维数组来存储学生的姓名和总分,以及一维数组来存储每门课程的平均分。在输入学生成绩后,使用嵌套的for循环计算每个学生的总分和每门课程的平均分。最后,使用一个for循环找出总分最高的学生。
阅读全文