某班学生有若干人(不超过40人),期中共考五门课,每个学生的成绩按学号顺序存入计算机。编程完成下列计算: 求出每个学生的总分和平均分 并求出每门课程的最高分以及该得分学生的学号
时间: 2024-12-20 10:21:11 浏览: 2
A3_学生成绩核算系统的设计与实现_成绩统计_
5星 · 资源好评率100%
要完成这个任务,你需要使用数组或结构体来存储每个学生的成绩信息,然后遍历数据进行相应的计算。这里是一个简单的C语言程序结构,假设我们有一个名为`Student`的结构体,其中包含学号、5门课程的成绩:
```c
#include <stdio.h>
// 定义学生结构体
typedef struct {
int id; // 学号
int scores[5]; // 五门课的成绩
} Student;
// 函数声明
void calculateTotalAndAverage(Student students[], int n);
void findMaxScoreAndId(int scores[], int course, int* maxScore, int* studentId);
int main() {
const int MAX_STUDENTS = 40;
Student students[MAX_STUDENTS];
// 假设这里已填充了学生的成绩
for (int i = 0; i < MAX_STUDENTS; i++) {
scanf("%d", &students[i].id); // 输入学号
for (int j = 0; j < 5; j++) {
scanf("%d", &students[i].scores[j]); // 输入成绩
}
}
int numStudents = ...; // 获取实际的学生数量,可能从输入或其他地方获取
calculateTotalAndAverage(students, numStudents);
findMaxScoreAndId(students[0].scores, 0, NULL, NULL); // 示例,只取第一门课程的最大值
return 0;
}
// 计算总分和平均分
void calculateTotalAndAverage(Student students[], int n) {
for (int i = 0; i < n; i++) {
int total = 0;
float average;
for (int j = 0; j < 5; j++) {
total += students[i].scores[j];
}
average = (float)total / 5;
printf("学生%d的总分:%d,平均分:%.2f\n", students[i].id, total, average);
}
}
// 查找每门课程的最高分及对应的学生学号
void findMaxScoreAndId(int scores[], int course, int* maxScore, int* studentId) {
*maxScore = scores[course];
*studentId = 0;
for (int i = 1; i < 5; i++) {
if (scores[i] > *maxScore) {
*maxScore = scores[i];
*studentId = i + 1;
}
}
}
```
阅读全文