通过C语言实现:有10个学生,每个学生的数据包括学号、姓名、三门课程的成绩,从键盘输入10个学生的数据,请求出各学生的平均成绩。打印出10位学生的信息以及最高分的学生的数据(包括学生、姓名、三门课程成绩、平均分数)。
时间: 2024-12-10 20:28:15 浏览: 19
设计一个学生类Student(学生学号、姓名、数学、英语、计算机成绩;)
5星 · 资源好评率100%
在C语言中,你可以创建一个结构体来表示学生的信息,然后遍历数组来收集数据并计算平均成绩。以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
typedef struct {
int id;
char name[50];
float score1, score2, score3; // 三门课程成绩
} Student;
// 计算单个学生的平均成绩
float calculate_average(Student student) {
return (student.score1 + student.score2 + student.score3) / 3.0;
}
int main() {
const int num_students = 10;
Student students[num_students];
for (int i = 0; i < num_students; i++) {
printf("请输入第%d个学生的学号、姓名以及三门课程成绩:\n", i+1);
scanf("%d", &students[i].id);
fgets(students[i].name, sizeof(students[i].name), stdin); // 防止回车字符
students[i].name[strlen(students[i].name) - 1] = '\0'; // 去除回车符
scanf("%f %f %f", &students[i].score1, &students[i].score2, &students[i].score3);
}
// 打印所有学生的平均成绩
printf("\n每位学生的平均成绩:\n");
for (int i = 0; i < num_students; i++) {
float average = calculate_average(students[i]);
printf("学号: %d, 姓名: %s, 平均成绩: %.2f\n", students[i].id, students[i].name, average);
}
// 查找最高分的学生
Student max_student = students[0];
for (int i = 1; i < num_students; i++) {
if (students[i].score1 > max_student.score1 ||
(students[i].score1 == max_student.score1 && students[i].score2 > max_student.score2 &&
students[i].score3 > max_student.score3)) {
max_student = students[i];
}
}
printf("\n最高分学生信息:\n");
printf("学号: %d, 姓名: %s, 成绩: (%.2f, %.2f, %.2f)\n",
max_student.id, max_student.name, max_student.score1, max_student.score2, max_student.score3);
printf("平均成绩: %.2f\n", calculate_average(max_student));
return 0;
}
```
这个程序会提示用户输入每个学生的信息,然后计算并打印他们的平均成绩,最后找出最高分的学生信息。
阅读全文