用c语言编写程序,打开文件"data",读取5个学生的信息,按照分数 由高到低排序,将排序后的信息存入新的文件"data1" 并将排序前的数据和排序后的数据分别打印在终端;
时间: 2024-03-16 14:48:07 浏览: 6
好的,以下是用C语言实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
typedef struct {
char name[20];
int score;
} Student;
// 比较函数,用于排序
int cmp(const void *a, const void *b) {
return ((Student*)b)->score - ((Student*)a)->score;
}
int main() {
FILE *fp;
Student data[5];
int i;
// 打开文件并读取数据
fp = fopen("data", "r");
if (fp == NULL) {
printf("无法打开文件\n");
return 0;
}
for (i = 0; i < 5; i++) {
fscanf(fp, "%s %d", data[i].name, &data[i].score);
}
fclose(fp);
// 对数据按照分数由高到低进行排序
qsort(data, 5, sizeof(Student), cmp);
// 将排序后的数据写入新文件"data1"
fp = fopen("data1", "w");
if (fp == NULL) {
printf("无法打开文件\n");
return 0;
}
for (i = 0; i < 5; i++) {
fprintf(fp, "%s %d\n", data[i].name, data[i].score);
}
fclose(fp);
// 打印排序前的数据和排序后的数据
printf("排序前的数据:\n");
for (i = 0; i < 5; i++) {
printf("%s %d\n", data[i].name, data[i].score);
}
printf("排序后的数据:\n");
for (i = 0; i < 5; i++) {
printf("%s %d\n", data[i].name, data[i].score);
}
return 0;
}
```
这里用了C标准库中的qsort函数进行排序,该函数的作用是对数组进行快速排序。需要注意的是,qsort函数需要传入比较函数,用于指定排序的方式。在本例中,比较函数cmp按照分数由高到低进行比较。