看看有错没
//把40个学生数据写入到文件中,然后排序总分高低输出#include <stdio.h>
#include <string.h>
#define M 40
void pai_xu(float data[],int i);
struct stu_info
{
long no;
char name[8];
float math,english,politics,computer;
}stua[M],*stup;
int main()
{
FILE*fp;
float sum;
int i;
stup=stua;
if((fp=fopen("d: \\School\\students","w+"))==NULL)
{
printf("Open file error!");
exit(0);
}
printf("\n请输入学生数据,输入完成按"#"确认: \n");
for(i=0;i<M;i++,stup++)
{
scanf("%d%s%f%f%f%f",&stu_p->no,stu_p->name,stu_p->math,stu_p->english,
stu_p->politics,stu_p->computer);
if(&stu_p->no||stu_p->name||stu_p->math||stu_p->english||
stu_p->politics||stu_p->computer=='#')break;
sum=(stup_math+stu_p->english+stu_p->poplitics+stu_pcomputer);//计算总分数
pai_xu(sum,M); //调用pai_xu函数 ,使成绩总分从高到低排序
stu_p=stua;
fwrite(stu_p,sizeof(struct stuinfo),M,fp); //成块写入到文件中
rewind(fp); //指针移到文件开头
for(i=0;i<M;i++,stu_p++)
printf("学生成绩排名如下:\n");
printf("%5d %s %f %f %f %f\n",&stu_p->no,stu_p->name,stu_p->math,
stu_p->english,stu_p->politics,stu_p->computer); //读出40个学生分数从高到低排序
stua=stu_p;
fclose(fp);
return 0;
}
void pai_xu(float data[],int n)
{
int i,j;
float max,temp;
for(i=0;i<n-1;i++)
{
max=i;
for(j=i+1;j<n;j++)
if(data[i]>data[max]
max=j;
temp=data[i];
data[i]=data[max];
dat[amax]=temp;
}
return;
}