首页 > 试题广场 >

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

[问答题]

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

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

存入一个新文件“stu_sort”中。

推荐

1.

#include<stdio.h>

#include<stdlib.h>

#define N 10

struct student

{char num[10]:

char name[8];

int score[3];

float ave;

}st[N],temp;


int main()

{FILE*fp;

int i,j,n;


/*读文件*/

if((fp=fopen(“stud","r))==NULL)

{printf("can not open\n");

exit(0);

}

printf( "File'stud’:");

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=0;j<3;j++)

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

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

}

printf("\n”);

fclose(fp);

n=i;


/*排序*/

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

for(j=i+1;j<n;j++)

if(st[i].ave<st[j].ave)

{temp=st[i];

st[i]=st[j]:

st[j]=temp;

}


/*输出*/

printf("\nNow:");

fp=fopen("stu_sort","w”);

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

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

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);

return 0;

}

2.

#include<stdio.h>

#inclhude<stdlib.h>

#define SIZE 5

struct student

{

char name[10];

int num;

int score[3];

float ave;

}  stud[SIZE],work;

int main()

{

void sort(void);

int i;

FILE *fp;

sort();

fp=fopen("'stud_sort.dat",rb");

printf("sorted student's scores list as follow\n");

printf(“----------------------------------------------------------\n”);

printf("NAVME  NO.  SCORE1   SCORE2   SCORE3   AVE   \n");

printf("-----------------------------------------------------------\n”);

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

{

fread(&stud[i],sizeof( struct studert),1,fp);

printf("%-10s%3d %8d %8d %8d %9.2f\n",stud[i].name,stud[i].num,

stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].ave);

}

fclose(fp);

return 0;

}


void sort(void)

{FLE*fp1,*fp2;

int i,j:

if((fp1=fopen("stu.dat","rb"))==NULL)

{printf("The file can not open\n\n”);

exit(0);

}

if((fp2=fopen("stud_ sort dat","wb"))==NULL)

{printf("The file write error\n");

exit(0);

}

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

if(fread(&stud[i],sizeof(struct studen),1,fp1)!=1)

{printf("file read error\n'");

exit(0);

}

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

{for(j=i+1;j<SIZE;j++)

if(stud[i].ave<stud[j].ave)

{work=stud[i];

stud[i]=stud[j];

stud[j]=work;

}

fwrite(&stud[i].sizeof(struct studert),1,fp2);

}

fclose(fp1);

fclose(fp2);

}


发表于 2018-03-25 10:27:22 回复(0)
#include<stdio.h>
 
#include<stdlib.h>
 
#define SIZE 5
 
struct student
 
{
 
char name[10];
 
int num;
 
int score[3];
 
float ave;
 
}  stud[SIZE],work;
 
int main()
 
{
 
void sort(void);
 
int i;
 
FILE *fp;
 
sort();
 
fp=fopen("'stud_sort.dat","rb");
 
printf("sorted student's scores list as follow\n");
 
printf("----------------------------------------------------------\n");
 
printf("NAVME  NO.  SCORE1   SCORE2   SCORE3   AVE   \n");
 
printf("-----------------------------------------------------------\n");
 

for(i=0;i<SIZE;i++)
 
{
 
fread(&stud[i],sizeof( struct student),1,fp);
 
printf("%-10s%3d %8d %8d %8d %9.2f\n",stud[i].name,stud[i].num,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].ave);
 
}
 
fclose(fp);
 
return 0;
 
}
 
 
 
void sort(void)
 
{FILE*fp1,*fp2;
 
int i,j;
 
if((fp1=fopen("stu.dat","rb"))==NULL)
 
{printf("The file can not open\n\n");
 
exit(0);
 
}
 
if((fp2=fopen("stud_ sort dat","wb"))==NULL)
 
{printf("The file write error\n");
 
exit(0);

}
 
for(i=0;i<SIZE;i++)
 
if(fread(&stud[i],sizeof(struct student),1,fp1)!=1)
 
{printf("file read error\n'");

exit(0);
 
}
 
for(i=0;i<SIZE;i++)
 
{for(j=i+1;j<SIZE;j++)
 
if(stud[i].ave<stud[j].ave)
 
{work=stud[i];

stud[i]=stud[j];
 
stud[j]=work;
 
}
 
fwrite(&stud[i],sizeof(struct student),1,fp2);
 
}
 
fclose(fp1);
 
fclose(fp2);
 
}

发表于 2019-08-29 17:07:31 回复(0)