📄 sort.c
字号:
#include<stdio.h>
#define size 20
struct student
{int num;
char name[10];
int a[6];
float ave;
}stu[size],b;
void sort(int flag) /*从主函数传入行参值*/
{int i,j,k,g,c,d,e,f;
FILE *fp1,*fp2;
k=1;
stu[i].ave=1.0;
fp1=fopen("student.txt","r");
for(i=0;i<size;i++)
{fread(&stu[i],sizeof(struct student),1,fp1);}/*读入student.txt*/
if(flag==1)
{loop1:printf("\n\n\n\n\n\n\n\n");
printf("-------------------------------------------------------------------------------\n");
printf("*******************************************************************************\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* 1---------UP *\n");
printf("* *\n");
printf("* *\n");
printf("* 2---------DOWM *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("*******************************************************************************\n");
printf("-------------------------------------------------------------------------------\n");
printf("input your choice:");
scanf("%d",&g);
clrscr();
if(g==1)
{for(i=0;i<size;i++)
for(j=i+1;j<size;j++)
if(stu[i].num>stu[j].num)
{b=stu[i];
stu[i]=stu[j];
stu[j]=b;}} /*按学号升序排列*/
else if(g==2)
{for(i=0;i<size;i++)
for(j=i+1;j<size;j++)
if(stu[i].num<stu[j].num)
{b=stu[i];
stu[i]=stu[j];
stu[j]=b;} }/*按学号降序排列*/
else
{printf("ERROR,Please input again:");
goto loop1;}
fclose(fp1);
}
if(flag==2)
{loop2:printf("\n\n\n\n\n\n\n\n");
printf("-------------------------------------------------------------------------------\n");
printf("*******************************************************************************\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* 1---------UP *\n");
printf("* *\n");
printf("* *\n");
printf("* 2---------DOWM *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("*******************************************************************************\n");
printf("-------------------------------------------------------------------------------\n");
printf("input your choice:");
scanf("%d",&c);
clrscr();
if(c==1)
{for(i=0;i<size;i++)
for(j=i+1;j<size;j++)
if(stu[i].a[0]>stu[j].a[0])
{b=stu[i];
stu[i]=stu[j];
stu[j]=b;}} /*按英语成绩升序排列*/
else if(c==2)
{for(i=0;i<size;i++)
for(j=i+1;j<size;j++)
if(stu[i].a[0]<stu[j].a[0])
{b=stu[i];
stu[i]=stu[j];
stu[j]=b;} } /*按英语成绩降序排列*/
else
{printf("ERROR,Please input again:");
goto loop2;}
fclose(fp1);
}
if(flag==3)
{loop3:printf("\n\n\n\n\n\n\n\n");
printf("-------------------------------------------------------------------------------\n");
printf("*******************************************************************************\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* 1---------UP *\n");
printf("* *\n");
printf("* *\n");
printf("* 2---------DOWM *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("*******************************************************************************\n");
printf("-------------------------------------------------------------------------------\n");
printf("input your choice:");
scanf("%d",&d);
clrscr();
if(d==1)
{for(i=0;i<size;i++)
for(j=i+1;j<size;j++)
if(stu[i].a[2]>stu[j].a[2])
{b=stu[i];
stu[i]=stu[j];
stu[j]=b;}} /*按物理成绩升序排列*/
else if(d==2)
{for(i=0;i<size;i++)
for(j=i+1;j<size;j++)
if(stu[i].a[2]<stu[j].a[2])
{b=stu[i];
stu[i]=stu[j];
stu[j]=b;}} /*按物理成绩降序排列*/
else
{printf("ERROR,Please input again:");
goto loop3;}
fclose(fp1);
}
if(flag==4)
{loop4:printf("\n\n\n\n\n\n\n\n");
printf("-------------------------------------------------------------------------------\n");
printf("*******************************************************************************\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* 1---------UP *\n");
printf("* *\n");
printf("* *\n");
printf("* 2---------DOWM *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("*******************************************************************************\n");
printf("-------------------------------------------------------------------------------\n");
printf("input your choice:");
scanf("%d",&e);
clrscr();
if(e==1)
{
for(i=0;i<size;i++)
for(j=i+1;j<size;j++)
if(stu[i].a[4]>stu[j].a[4])
{b=stu[i];
stu[i]=stu[j];
stu[j]=b;}} /*按数学成绩升序排列*/
else if(e==2)
{for(i=0;i<size;i++)
for(j=i+1;j<size;j++)
if(stu[i].a[4]<stu[j].a[4])
{b=stu[i];
stu[i]=stu[j];
stu[j]=b;}} /*按数学成绩降序排列*/
else
{printf("ERROR,Please input again:");
goto loop4;}
fclose(fp1);
}
if(flag==5)
{loop5:printf("\n\n\n\n\n\n\n\n");
printf("-------------------------------------------------------------------------------\n");
printf("*******************************************************************************\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* 1---------UP *\n");
printf("* *\n");
printf("* *\n");
printf("* 2---------DOWM *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("* *\n");
printf("*******************************************************************************\n");
printf("-------------------------------------------------------------------------------\n");
scanf("%d",&f);
clrscr();
if(f==1)
{for(i=0;i<size;i++)
for(j=i+1;j<size;j++)
if(stu[i].ave>stu[j].ave)
{b=stu[i];
stu[i]=stu[j];
stu[j]=b;}} /*按平均分升序排列*/
else if(f==2)
{for(i=0;i<size;i++)
for(j=i+1;j<size;j++)
if(stu[i].ave<stu[j].ave)
{b=stu[i];
stu[i]=stu[j];
stu[j]=b;}} /*按平均分降序排列*/
else
{printf("ERROR,Please input again:");
goto loop5;}
fclose(fp1);
}
fp2=fopen("score.txt","w");/*把排好序的学生信息写入score.txt*/
for(i=0;i<size;i++)
{fwrite(&stu[i],sizeof(struct student),1,fp2);}
fclose(fp2);
if((fp2=fopen("score.txt","r"))==NULL)
{printf("cannot open file\n");
return;
}
for(i=0;i<size;i++)
fread(&stu[i],sizeof(struct student),1,fp2);
printf("\n\n\n\n\n\n");
printf("Students message:\n");
printf("-----------------------------------------------------------------------------\n");
printf("Place NUM NAME Eng score-Eng Phy score-Phy Mat score-Mat Ave\n");
for(i=0;i<size;i++)
{printf(" %-5d%3d %-8s%-9d%-7d%-10d%-6d%-10d%-5d%6.2f\n",k++,stu[i].num,stu[i].name,stu[i].a[0],
stu[i].a[1],stu[i].a[2],stu[i].a[3],stu[i].a[4],stu[i].a[5],stu[i].ave); }
printf("-------------------------------------------------------------------------------\n");
/*输出排好序的学生的信息*/
fclose(fp1);
printf("1-------------Exit 2----------------Back\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -