用c语言编程:将文件 stu _info2.txt中学生信息读出,按照平均分排序处理,再重新写入文件" stu _ sort . txt "并保存于磁盘上。
时间: 2024-02-22 12:01:44 浏览: 74
好的,我可以帮你解决这个问题。你可以参考以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT 100
typedef struct {
char name[20];
int age;
float score[3];
float avg_score;
} Student;
int main() {
FILE *fp_in, *fp_out;
Student students[MAX_STUDENT];
int n = 0, i, j;
// 读取文件
fp_in = fopen("stu_info2.txt", "r");
if (fp_in == NULL) {
printf("Failed to open file stu_info2.txt\n");
return -1;
}
while (fscanf(fp_in, "%s %d %f %f %f", students[n].name, &students[n].age, &students[n].score[0], &students[n].score[1], &students[n].score[2]) != EOF) {
students[n].avg_score = (students[n].score[0] + students[n].score[1] + students[n].score[2]) / 3.0;
n++;
}
fclose(fp_in);
// 排序
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (students[i].avg_score < students[j].avg_score) {
Student tmp = students[i];
students[i] = students[j];
students[j] = tmp;
}
}
}
// 写入文件
fp_out = fopen("stu_sort.txt", "w");
if (fp_out == NULL) {
printf("Failed to open file stu_sort.txt\n");
return -1;
}
for (i = 0; i < n; i++) {
fprintf(fp_out, "%s %d %.2f %.2f %.2f %.2f\n", students[i].name, students[i].age, students[i].score[0], students[i].score[1], students[i].score[2], students[i].avg_score);
}
fclose(fp_out);
printf("Done\n");
return 0;
}
```
这段代码实现了从文件中读取学生信息,按照平均分排序,再将排序后的信息写入新文件的功能。在这个例子中,我们假设每个学生的信息包含姓名、年龄、三科成绩和平均分。
你可以将这段代码保存为 sort.c,并在命令行中输入以下命令来编译并运行程序:
```
gcc sort.c -o sort
./sort
```
程序将会读取 stu_info2.txt 文件中的学生信息,排序后将结果写入 stu_sort.txt 文件中。
希望这个例子能对你有所帮助!
阅读全文