统计成绩。给出n个学生的考试成绩表,每条信息由学号、姓名和成绩组成,试设计一个综合程序: (1)按成绩高低次序,打印出每个学生的信息; (2)要求程序具有选择任一种排序算法的功能。
时间: 2024-02-15 11:02:05 浏览: 148
对学生成绩统计并计算的程序
5星 · 资源好评率100%
好的,我理解了您的问题。这是一个统计成绩的程序,需要按照成绩高低的顺序输出每个学生的信息,同时还需要支持选择排序算法的功能。
下面是一个示例代码,它能够实现您的要求。其中使用了冒泡排序算法,您可以根据需要进行替换:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 100
typedef struct student {
char num[20];
char name[25];
int score;
} StuNode, *Stu;
void read_data(Stu stu, int n) { // 读取数据
FILE *fp;
char name[20];
int score;
fp = fopen("data.txt", "r");
for (int i = 0; i < n; i++) {
fscanf(fp, "%s%s%d", stu[i].num, stu[i].name, &stu[i].score);
}
fclose(fp);
}
void print_data(Stu stu, int n) { // 打印数据
for (int i = 0; i < n; i++) {
printf("%s %s %d\n", stu[i].num, stu[i].name, stu[i].score);
}
}
void bubble_sort(Stu stu, int n) { // 冒泡排序
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (stu[j].score < stu[j + 1].score) {
StuNode temp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}
}
int main() {
Stu stu = (Stu)malloc(sizeof(StuNode) * MAX_N);
int n;
printf("请输入学生人数:");
scanf("%d", &n);
read_data(stu, n);
printf("原始数据:\n");
print_data(stu, n);
bubble_sort(stu, n);
printf("按成绩排序后:\n");
print_data(stu, n);
free(stu);
return 0;
}
```
这个程序中,我们使用了结构体来存储每个学生的信息。在 `read_data()` 函数中,我们从文件中读取每个学生的信息;在 `print_data()` 函数中,我们按照原始顺序打印每个学生的信息;在 `bubble_sort()` 函数中,我们使用冒泡排序算法按照成绩高低的顺序对学生信息进行排序。最后,我们在 `main()` 函数中调用这些函数,完成了整个程序的功能。
注意,这个程序中的文件名是 `data.txt`,需要您自己创建并输入数据。另外,如果您想使用其他排序算法,只需要在程序中替换 `bubble_sort()` 函数即可。
阅读全文