13.有3个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成绩。C语言
时间: 2024-12-14 12:28:24 浏览: 3
在C语言中,你可以通过结构体来存储学生的相关信息,并使用动态内存分配来存储多个学生。这里是一个简单的示例程序来实现这个需求:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生信息结构体
typedef struct {
int id;
char gender[10];
char name[50];
float scores[4]; // 存储四门课的成绩
} Student;
void inputStudent(Student *student) {
printf("请输入学生信息(学号, 性别, 姓名, 四门课成绩): ");
scanf("%d, %s, %s, %.1f, %.1f, %.1f, %.1f", &student->id, student->gender, student->name, &student->scores[0], &student->scores[1], &student->scores[2], &student->scores[3]);
}
float calculateAverage(Student *student) {
float sum = 0;
for (int i = 0; i < 4; i++) {
sum += student->scores[i];
}
return sum / 4;
}
void findHighestAverage(Student students[], int numStudents) {
Student maxStudent = students[0];
for (int i = 1; i < numStudents; i++) {
if (calculateAverage(&students[i]) > calculateAverage(&maxStudent)) {
maxStudent = students[i];
}
}
printf("\n最高平均成绩的学生信息:\n");
printf("学号: %d\n", maxStudent.id);
printf("性别: %s\n", maxStudent.gender);
printf("姓名: %s\n", maxStudent.name);
printf("平均成绩: %.1f\n", calculateAverage(&maxStudent));
}
int main() {
int numStudents;
printf("请输入学生人数: ");
scanf("%d", &numStudents);
// 动态创建数组并初始化
Student* students = malloc(numStudents * sizeof(Student));
for (int i = 0; i < numStudents; i++) {
inputStudent(&students[i]);
}
findHighestAverage(students, numStudents); // 找到最高平均分的学生
// 释放内存
free(students);
return 0;
}
```
阅读全文