/* 3、编写一个程序,实现如下功能: (1)将5个学生的信息(包括学号、姓名、成绩三项信息)写入到file1中。 (2)从file1中读出5个学生的信息,按成绩自高到低排序,排序后的结果写入到文件file2中。 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 5 typedef struct student { int num; char name[8]; float socre; }Student; //写入成绩并且返回stu值 void write(char *file,FILE *fp,Student *stu) { if((fp=fopen(file,"w"))==NULL) { printf("文件创建失败"); return; } for(int i=0;i<N;i++) { fprintf(fp,"%d %s %.2f ",stu[i].num,stu[i].name,stu[i].socre); } fclose(fp); } //排序准备写入文件2的数据 Student *sort(Student *stu2) { Student tmp;//结构体临时变量,不要定义为*tmp会报错!!! //冒泡排序 for(int i=0;i<N-1;i++) { for(int j=0;j<N-i-1;j++) { if(stu2[j].socre<stu2[j+1].socre) { tmp = stu2[j]; stu2[j] = stu2[j+1]; stu2[j+1]= tmp ; } } } } int main() { FILE *fp; char *file1="D:\test1.txt",*file2="D:\test2.txt"; //准备成绩 Student stu[N]; printf("请输入五位个学生的学号/姓名/成绩(格式为xxxxx xx xx): "); for(int i=0;i<N;i++) { scanf("%d %s %f",&stu[i].num,stu[i].name,&stu[i].socre); getchar(); } //写入text1 write(file1,fp,stu); //排序成绩 Student *stu2; stu2 = sort(stu); //写入text2 write(file2,fp,stu); system("pause"); }