有N个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键上输入N个学生的信息, //要求输出总平均成绩最高的学生信息,包括学号、别、姓名和平均成绩。C语言
时间: 2024-09-09 11:02:00 浏览: 50
在C语言中,你可以通过动态内存分配和结构体来实现这个功能。首先,创建一个结构体`Student`来存储学生的相关信息:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生结构体
typedef struct {
int id;
char gender[10];
char name[50];
float score[4]; // 四门课的成绩数组
} Student;
void input_student(Student *students, int N) {
for (int i = 0; i < N; i++) {
printf("请输入学生%d的信息(学号,性别,姓名,四门课成绩):\n", i+1);
scanf("%d%s%s", &students[i].id, students[i].gender, students[i].name);
for (int j = 0; j < 4; j++) {
scanf("%f", &students[i].score[j]);
}
}
}
float calculate_average(Student student) {
float sum = 0;
for (int i = 0; i < 4; i++) {
sum += student.score[i];
}
return sum / 4;
}
void find_highest_average(Student *students, int N) {
Student highest_avg_student = students[0];
for (int i = 1; i < N; i++) {
if (calculate_average(students[i]) > calculate_average(highest_avg_student)) {
highest_avg_student = students[i];
}
}
printf("最高平均成绩的学生信息如下:\n");
printf("学号: %d\n", highest_avg_student.id);
printf("性别: %s\n", highest_avg_student.gender);
printf("姓名: %s\n", highest_avg_student.name);
printf("平均成绩: %.2f\n", calculate_average(highest_avg_student));
}
int main() {
int N;
printf("请输入学生总数:");
scanf("%d", &N);
// 分配内存并初始化学生数据
Student *students = (Student*)malloc(N * sizeof(Student));
input_student(students, N);
find_highest_average(students, N);
// 清理内存
free(students);
return 0;
}
```
在这个程序中,我们首先读取所有学生的数据,然后遍历计算每个人的平均成绩,并找出平均分最高的学生。最后,输出这个学生的详细信息。
阅读全文