首页 > 试题广场 >

有5个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包

[问答题]

5个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包括学号,姓名,3

门课程成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。将“stud”文件中的学生数据,按平均分进行排序处理,将已排序的学生数据

存入一个新文件“stu_sort”中。将已排序的学生成绩文件进行插入处理。插入一个学生的3门课程成绩,程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后将结果仍存入原有的“stu_sort”文件。

推荐

#include<stdio.h>

#include<stdlib.h>

struct student

{char num[10];

char name[8];

int score[3];

float ave;

}  st[10],s;


int main()

{FILE *fp,*fp1;

int i,j,t,n;

printf(“\nNO.:");

scanf("%s",s.num);

printf("name:");

scanf("%s",s.name);

printf("score1,score2,score3:");

scanf("%d,%d,%d",&s.score[0],&s.score[1],&s.score[2]);

s.ave=(s.score[0]+s.score[1]+s.score[2])/3.0;


/*从文件读数据*/

if((fp=fopen("stu_sort","r")==NULL)

{printf("can not open file.");

exit(0);

}

printf("original data:\n');

for(i=0;fread(&st[i],sizeof( struct student),1,fp)!=0;i++)

{printf("\n%8s%8s",st[i].num,st[i].name);

for (j=0j<3j++)

printf("%8d",st[i].score[j]);

printf("%10.2f",st[i].ave);

}


n=i;

for((t=0;st[t].ave> s.ave && t<n;t++);


/*向文件写数据*/

printf("\nNow:\n”);

fp1=fopen("sortl.dat","w");

for (i=0;i<t;i++)

{fwrite(&st[i],sizeof(struct student),1,fp1);

printf("\n%8s%8s”,st[i].num,st[i].name);

for (j=0;j<3;j++)

printf("%8d”,st[i].score[j]);

printf("%10.2f",st[i].ave);

}

fwrite(&s,sizeof(struct studert),1,fp1);

printf("\n%8s%7s%7d %7d %7d%10.2f",s.num,s.name,s.score[0],

s.score[1],s.score[2],s.ave);

for (i=t;i<n;i++)

{fwrite(&st[i],sizeof(struct student),1,fp1);

printf("\n%8s%8s",st[i].num,st[i].name):

for(j=0;j<3;j++)

printf(“%8d”,st[i].score[j]);

printf("%10.2f",st[i].ave);

}

printf("\n”);

fclose(fp);

fclose(fp1);

return 0;

}


发表于 2018-03-25 10:27:38 回复(0)