用c语言编程:利用结构体和指针,输入学生学号、数学成绩、语文成绩、英语成绩、姓名,输出该次考试三个人数学、语文、英语总体的平均分,按学号顺序输出学生学号、姓名、三科平均分,最后输出总分最高的学生的学号、姓名、数学成绩、语文成绩、英语成绩、三科平均分、三科总分
时间: 2024-09-20 17:03:30 浏览: 119
在C语言编程中,你可以通过定义一个结构体`Student`来存储学生的信息,然后使用指针数组来表示多个学生,并计算他们的平均分数。以下是实现这个功能的一个示例:
```c
#include <stdio.h>
#include <string.h>
// 定义结构体
struct Student {
int id;
char name[50];
float math_score, chinese_score, english_score;
};
void input_students(Student* students, int num_students) {
for (int i = 0; i < num_students; i++) {
printf("请输入第%d位学生的学号、姓名以及三科成绩:\n", i + 1);
scanf("%d%s%f%f%f", &students[i].id, students[i].name, &students[i].math_score, &students[i].chinese_score, &students[i].english_score);
}
}
float calculate_average(struct Student student) {
return (student.math_score + student.chinese_score + student.english_score) / 3.0f;
}
void print_students_and_averages(Student* students, int num_students) {
printf("\n学号\t姓名\t数学平均分\t语文平均分\t英语平均分\n");
float highest_total = -1; // 初始化最高总分为负一
for (int i = 0; i < num_students; i++) {
float avg = calculate_average(students[i]);
printf("%d\t%s\t%.2f\t%.2f\t%.2f\n", students[i].id, students[i].name, avg, students[i].math_score, students[i].chinese_score, students[i].english_score);
if (highest_total < students[i].math_score + students[i].chinese_score + students[i].english_score) {
highest_total_student = i; // 记录总分最高的学生索引
}
}
printf("\n总分最高的学生信息:\n");
Student highest_student = students[highest_total_student];
printf("学号: %d, 姓名: %s, 数学: %.2f, 语文: %.2f, 英语: %.2f, 平均分: %.2f, 总分: %.2f\n",
highest_student.id, highest_student.name, highest_student.math_score, highest_student.chinese_score, highest_student.english_score,
calculate_average(highest_student), highest_total);
}
int main() {
int num_students;
printf("请输入学生人数:");
scanf("%d", &num_students);
Student* students = (struct Student*)malloc(num_students * sizeof(struct Student)); // 动态分配内存
input_students(students, num_students);
print_students_and_averages(students, num_students);
free(students); // 释放动态分配的内存
return 0;
}
```
当你运行此程序时,它会提示用户输入每个学生的详细信息,然后输出每个学生的平均分和最高分的学生详细信息。
阅读全文