输入10个学生的学号,姓名,年龄,性别,成绩,将低于平均成绩的学生输出
时间: 2024-12-19 16:18:37 浏览: 8
在C语言中,我们可以先计算所有学生的平均成绩,然后遍历每个学生,如果某个学生的成绩低于这个平均成绩,就将其输出。以下是实现该功能的一个例子:
```c
#include <stdio.h>
#include <stdlib.h> // 包含浮点数运算和动态内存分配库
#define MAX_STUDENTS 10
#define MAX_NAME_LENGTH 50
// 定义学生结构体
typedef struct {
int id; // 学号
char name[MAX_NAME_LENGTH]; // 姓名
int age; // 年龄
char gender; // 性别 (如 'M' 或 'F')
float score; // 成绩
} Student;
// 计算平均成绩
float calculate_average(Student students[], int num_students) {
float total = 0.0;
for (int i = 0; i < num_students; i++) {
total += students[i].score;
}
return total / num_students;
}
int main() {
Student students[MAX_STUDENTS];
int num_students = 0;
while (num_students < MAX_STUDENTS) {
printf("请输入第 %d 名学生的详细信息 (学号, 姓名, 年龄, 性别, 成绩): ", num_students + 1);
scanf("%d%s%d%ch%f", &students[num_students].id, students[num_students].name, &students[num_students].age, &students[num_students].gender, &students[num_students].score);
if (students[num_students].score < 0 || students[num_students].score > 100) {
printf("无效的成绩,已忽略。\n");
} else {
num_students++;
}
}
// 计算并保存平均成绩
float avg_score = calculate_average(students, num_students);
printf("平均成绩: %.2f\n", avg_score);
// 输出低于平均成绩的学生
printf("低于平均分的学生:\n");
for (int i = 0; i < num_students; i++) {
if (students[i].score < avg_score) {
printf("学号: %d, 姓名: %s, 年龄: %d, 性别: %c, 成绩: %.2f\n",
students[i].id, students[i].name, students[i].age, students[i].gender, students[i].score);
}
}
return 0;
}
```
阅读全文