我想在这个程序中排序,可是总是出错,得不到我想要的结果,请大虾们帮忙看看,在此先谢谢路见不平的大虾!
(先是输入一个学生的三门成绩,然后输入到stud.dat中,之后读出排序,再输入到stu.out中)
#include<stdio.h>
#define N 4
void main()
{
int a[N][4];
int i,j;
FILE *fp1,*fp2;
int temp,temp1,temp2,temp3;
if((fp1=fopen("stud.dat","w+"))==NULL) return;
printf("input the data:\n");
for(i=0;i<N;i++)
{ printf("input %d student:",i+1);
scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);
a[i][3]=(a[i][0]+a[i][1]+a[i][2])/3;
fprintf(fp1,"%d%d%d%d",a[i][0],a[i][1],a[i][2],a[i][3]);
}
fclose(fp1);
i=0;
if((fp1=fopen("stud.dat","r"))==NULL) return ;
if((fp2=fopen("stud.out","w+"))==NULL) return ;
for(i=0;i<N;i++)
{ fscanf(fp1,"%d%d%d%d",&a[i][0],&a[i][1],&a[i][2],&a[i][3]);
printf("%d %d %d %d \n",a[i][0],a[i][1],a[i][2],a[i][3]);
}
for(i=0;i<N-1;i++)
{ for(j=0;j<N-i-1;j++)
if(a[j][3]<a[j+1][3])
{ temp=a[j][3];
a[j][3]=a[j+1][3];
a[j+1][3]=temp;
temp1=a[j][0];
a[j][0]=a[j+1][0];
a[j+1][0]=temp1;
temp2=a[j][1];
a[j][1]=a[j+1][1];
a[j+1][1]=temp2;
temp3=a[j][2];
a[j][2]=a[j+1][2];
a[j+1][2]=temp3;
}
}
for(i=0;i<N;i++)
fprintf(fp2,"%d%d%d%d",a[i][0],a[i][1],a[i][2],a[i][3]);
fclose(fp1);
rewind(fp2);
for(i=0;i<N;i++)
{ fscanf(fp2,"%d%d%d%d",&a[i][0],&a[i][1],&a[i][2],&a[i][3]);
printf("%d %d %d %d\n",a[i][0],a[i][1],a[i][2],a[i][3]);
}
fclose(fp2);
}
[此贴子已经被作者于2007-4-12 11:49:35编辑过]
----------------解决方案--------------------------------------------------------