推荐答案
贝尔梅尔娜美
2018.01.15
采纳率:60% 等级:39
已帮助:94865人
文件是用来保存数据的,是无法用文件来进行排序的。应该从文件中把数据读入到链表或数组中,再用数组或链表结构进行排序。typedef struct/*学生结构体*/{char num[10]; /*学生学号*/char name[20]; /*学生姓名*/char sex[4];/*学生性别*/int year,month,day;/*出生年月日*/char face[4];/*政治面貌*/float math,gaoji,dianlu,aver; /*数学分析,高级语言程序设计,电路与电子学成绩*/}Student;Student stu[30];void paixu_xuehao(Student stud[],int n) /*按学号排序*/{ float p,q,w;int i,j,r,g,h;double y;char x[20],t[10],z[10];for(i=0;i0){ strcpy(t,stud[j].num);strcpy(stud[j].num,stud[j+1].num);strcpy(stud[j+1].num,t);strcpy(x,stud[j].name);strcpy(stud[j].name,stud[j+1].name);strcpy(stud[j+1].name,x);r=stu[j].year;stu[j].year=stu[j+1].year;stu[j+1].year=r;g=stu[j].month;stu[j].month=stu[j+1].month;stu[j+1].month=g;h=stu[j].day;stu[j].day=stu[j+1].day;stu[j+1].day=h;strcpy(z,stud[j].face);strcpy(stud[j].face,stud[j+1].face);strcpy(stud[j+1].face,z);y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=p;q=stu[j].gaoji;stu[j].gaoji=stu[j+1].gaoji;stu[j+1].gaoji=q;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;}return;}int wenjian2(Student stu[],int n) /*从文件中读入数据*/{int i=0;FILE *fp; /*定义文件指针*/char filename[20]; /*定义文件名*/printf("\t\t\tInput the filename:");scanf("\t\t\t%s",filename); /*输入文件名*/if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/printf("\t\t\t");} fread(&stu[i],sizeof(Student),1,fp); while(!feof(fp))fread(&stu[i++],sizeof(Student),1,fp);fclose(fp); /*关闭文件*/printf("\t\t\tSuccessed!\n");printf("\t\t\t");system("pause");return(i);}
10分享举报
此回答由管理员 静公主宸琰 推荐为最佳回答。