有十个学生,每个学生的数据包括学号,姓名,三门课程的成绩,从键盘输入十个学生的数据要求输入三个要求输出三门课程的总平均成绩,以及最高分的学生的学号,姓名,三门课程成绩平均分数c语言。
时间: 2023-05-18 16:04:18 浏览: 116
这是一个典型的学生成绩统计问题,可以使用C语言来解决。以下是一个简单的代码示例:
```c
#include <stdio.h>
#include <string.h>
#define NUM_STUDENTS 10
#define NUM_COURSES 3
struct Student {
int id;
char name[20];
int grades[NUM_COURSES];
};
int main() {
struct Student students[NUM_STUDENTS];
int i, j;
float course_averages[NUM_COURSES] = {0};
float highest_average = 0;
int highest_index = 0;
// Input student data
for (i = 0; i < NUM_STUDENTS; i++) {
printf("Enter student %d's id, name, and grades for three courses: ", i+1);
scanf("%d %s %d %d %d", &students[i].id, students[i].name, &students[i].grades[0], &students[i].grades[1], &students[i].grades[2]);
}
// Calculate course averages
for (i = 0; i < NUM_STUDENTS; i++) {
for (j = 0; j < NUM_COURSES; j++) {
course_averages[j] += students[i].grades[j];
}
}
for (j = 0; j < NUM_COURSES; j++) {
course_averages[j] /= NUM_STUDENTS;
}
// Find highest average
for (i = 0; i < NUM_STUDENTS; i++) {
float average = 0;
for (j = 0; j < NUM_COURSES; j++) {
average += students[i].grades[j];
}
average /= NUM_COURSES;
if (average > highest_average) {
highest_average = average;
highest_index = i;
}
}
// Output results
printf("Course averages: %.2f %.2f %.2f\n", course_averages[0], course_averages[1], course_averages[2]);
printf("Highest average student: %d %s %.2f\n", students[highest_index].id, students[highest_index].name, highest_average);
return 0;
}
```
注意,这个代码示例并不完美,还有很多可以改进的地方,比如输入数据时没有进行错误检查,计算平均分时没有考虑小数位数等等。但是,这个示例可以帮助你理解如何解决这个问题。
阅读全文