{
if(L.r[k].totalgrade L.r[0]=L.r[k]; L.r[k]=L.r[k-1]; for(int j=k-2;L.r[0].totalgrade L.r[j+1]=L.r[j]; } L.r[j+1]=L.r[0]; } } } if(i==2) //折半插入排序,参考同上 { int m; for(int k=2;k<=n;++k) { L.r[0]=L.r[k]; int low=1,high=k-1; while(low<=high) { m=(low+high)/2; if(L.r[0].totalgrade low=m+1; } for(int j=k-1;j>=high+1;--j) L.r[j+1]=L.r[j]; L.r[high+1]=L.r[0]; } } for(int q=n;q>=1;q--) //将排序好的内容输入到3.txt { fprintf(fp,\ese,L.r[q].math,L.r[q].english); } if(fclose(fp)) { printf(\文件关闭失败\exit(0); } } void search(char *name) //按姓名查找 { gradelist file=fileread(\student * p=file; while(p->next!=NULL) { if(strcmp(name,p->name)==0) { printf(\nglish); return; } p=p->next; } printf(\查无此人,请确定名字输入正确\\n\exit(0); } void main(void) //本代码由武汉工业学院计科09级,百度ID 轻盈流飞雪 所编,转载注明,完成作业请删除此句,不懂勿问,哥很忙 { int chioce; gradelist file1=fileread(\printf(\现有成绩记录文件1\\n\ printf(\FilePrint(file1); printf(\printf(\现有成绩记录文件2\\n\ printf(\FilePrint(file2); printf(\printf(\第一步,合并成绩记录文件\\n\merger(); printf(\合并成功\\n\system(\ printf(\现有合并后的成绩记录文件3\\n\ printf(\gradelist file3=fileread(\FilePrint(file3); printf(\printf(\第二步,抽取补考成绩记录\\n\ extract(); system(\ printf(\现有补考成绩记录文件4\\n\ printf(\gradelist file4=fileread(\FilePrint(file4); printf(\printf(\第三步,对文件3进行排序\\n\ printf(\请输入排序方式(1/2)\\n1:直接插入排序\\n2:折半插入排序\\n\scanf(\if(chioce==1) sort(1); else if(chioce==2) sort(2); else { printf(\输入不合理,程序默认采用1方式\\n\sort(1); } file3=fileread(\ printf(\现有按总分降序的成绩记录3\\n\ printf(\FilePrint(file3); printf(\printf(\第四步,查找学生信息\\n\char name[100]; printf(\请输入学生姓名\\n\scanf(\search(name); printf(\按任意键结束程序\\n\getchar(); }