c语言给出结构体有关8个学生姓名与成绩先按冒泡排序后筛选出及格的人数并输出后,再次对现在未及格的学生再次排序并保证输出的是那部分不及格的学生的信息代码举例
时间: 2024-03-03 14:50:59 浏览: 57
好的,以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 8
#define PASSING_GRADE 60
typedef struct {
char name[20];
int score;
} Student;
void bubble_sort(Student students[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (students[j].score > students[j + 1].score) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
int main() {
Student students[MAX_STUDENT_NUM] = {
{"Alice", 80},
{"Bob", 55},
{"Charlie", 70},
{"David", 90},
{"Eve", 40},
{"Frank", 75},
{"Grace", 65},
{"Henry", 50}
};
int passing_count = 0;
for (int i = 0; i < MAX_STUDENT_NUM; i++) {
if (students[i].score >= PASSING_GRADE) {
passing_count++;
}
}
bubble_sort(students, MAX_STUDENT_NUM);
printf("Passing students: %d\n", passing_count);
for (int i = 0; i < MAX_STUDENT_NUM; i++) {
if (students[i].score >= PASSING_GRADE) {
printf("%s\t%d\n", students[i].name, students[i].score);
}
}
printf("Failing students:\n");
for (int i = 0; i < MAX_STUDENT_NUM; i++) {
if (students[i].score < PASSING_GRADE) {
printf("%s\t%d\n", students[i].name, students[i].score);
}
}
return 0;
}
```
该程序首先定义了一个 `Student` 结构体,包含学生姓名和成绩两个字段。然后定义了一个 `bubble_sort` 函数,该函数接受一个 `Student` 数组和数组长度作为参数,使用冒泡排序算法对数组进行排序。主函数中定义了一个包含 8 个学生信息的 `students` 数组,然后调用 `bubble_sort` 函数进行排序。接着遍历数组,统计及格人数,输出及格学生的信息;再次遍历数组,输出不及格学生的信息。
阅读全文