- 主题
- 0
- 帖子
- 23
- 精华
- 0
- 积分
- 45
- C币
- 13 枚
- 在线时间
- 5 小时
- 注册时间
- 2010-3-19
- 最后登录
- 2010-5-28
- 性别
- 保密

- 主题
- 0
- 帖子
- 23
- C币
- 13 枚
- 在线时间
- 5 小时
|
发表于 2010-5-27 23:21:25
|显示全部楼层
0C币
- #include "stdio.h"
- #include "stdlib.h"
- struct student_type
- { char num[11];
- char name[8];
- char cla[20];
- int score[3];
- float ave; } stu[4],work,s;
- void main()
- { void save();
- void display();
- void sort();
- void ini();
- int i,sum=0;
- for(i=0;i<4;i++)
- { scanf("%s %s %s %d %d %d",stu.num,stu.name,stu.cla,&stu.score[0],&stu.score[1],&stu.score[2]);
- sum=stu.score[0]+stu.score[1]+stu.score[2];
- stu.ave=float(sum/3.0); }
- save();
- display();
- sort();
- ini(); }
- void save()
- { FILE *fp;
- int i;
- if((fp=fopen("score","wb"))==NULL)
- { printf("This file can't open!\n");
- return;}
- for(i=0;i<4;i++)
- if(fwrite(&stu,sizeof(student_type),1,fp)!=1)
- { printf("File open error!\n");
- return;}
- fclose(fp); }
- void display()
- { FILE *fp;
- int i,m,j,sum=0;
- float average;
- fp=fopen("score","rb");
- printf("num name cla score1 score2 score3 ave\n");
- printf("---------------------------------------------------------------\n");
- for(i=0;i<4;i++)
- { fread(&stu,sizeof(student_type),1,fp);
- printf("%-10s%-10s%-10s%8d%8d%8d %8.2f\n",stu.num,stu.name,stu.cla,stu.score[0],stu.score[1],
- stu.score[2],stu.ave);
- }
- fread(&stu,sizeof(struct student_type),1,fp);
- for(j=0;j<3;j++)
- { m=j;
- for(i=0;i<4;)
- {sum+=stu.score[m];
- average=float(sum/4.0);
- i++;}
- sum=0;
- printf("subject %d average is %.2f\n",m,average); }
- fclose(fp); }
- void sort()
- { FILE *fp1,*fp2;
- int i,j;
- if((fp1=fopen("score","rb"))==NULL)
- { printf("The file cannot open\n\n");
- exit(0); }
- if((fp2=fopen("sort","rb"))==NULL)
- { printf("The file write error\n");
- exit(0); }
- for(i=0;i<4;i++)
- if(fread(&stu,sizeof(struct student_type),1,fp1)!=1)
- { printf("file write error\n");
- exit(0); }
- for(i=0;i<4;i++)
- for(j=i+1;j<4;j++)
- if(stu.ave<stu[j].ave)
- { work.ave=stu.ave; stu.ave=stu[j].ave; stu[j].ave=work.ave; }
- fwrite(&stu,sizeof(struct student_type),1,fp2);
- fclose(fp1);
- fp2=fopen("sort","r+");
- printf("sorted students' scores lists is as follows\n");
- printf("-----------------------------------------------\n");
- for(i=0;i<4;i++)
- { fread(&stu,sizeof(struct student_type),1,fp2);
- printf("%-10s%-10s%-10s%8d%8d%8d%8.2f\n",stu.num,stu.name,stu.cla,stu.score[0],stu.score[1],stu.score[2],stu.ave);
- fclose(fp2); }}
- void ini()
- { FILE *fp;
- int i,j,t;
- printf("\nnum: ");
- scanf("%s",s.num);
- printf("\nname: ");
- scanf("%s",s.name);
- printf("\ncla: ");
- scanf("%s",s.cla);
- printf("score1,score2,score3: ");
- scanf("%d%d%d",&s.score[0],&s.score[1],&s.score[2]);
- s.ave=(float)((s.score[0]+s.score[1]+s.score[2])/3.0);
- for(t=0;stu[t].ave>s.ave&&t<4;t++)
- printf("\nnow\n");
- if((fp=fopen("sort","wb"))==NULL)
- { printf("can't open file\n");
- exit(0); }
- for(i=0;i<t;i++)
- { fwrite(&stu,sizeof(struct student_type),1,fp);
- printf("\n%-10s%-10s%-10s",stu.num,stu.name,stu.cla);
- for(j=0;j<3;j++)
- printf("%8d",stu.score[j]);
- printf("%8.2f",stu.ave); }
- fwrite(&s,sizeof(struct student_type),1,fp);
- printf("\n%-10s%-10s%-10s%8d%8d%8d%8.2f",s.num,s.name,s.cla,s.score[0],s.score[1],s.score[2],s.ave);
- for(i=t;i<4;i++)
- { fwrite(&stu,sizeof(struct student_type),1,fp);
- printf("\n%-10s%-10s%-10s",stu.num,stu.name,stu.cla);
- for(j=0;j<3;j++)
- printf("\n%8d",stu.score[j]);
- printf("\n%8.2f",stu.ave); }
- printf("\n");
- fclose(fp);
- }
复制代码
执行结果是:01 li 0906 89 98 78
02 wang 0906 89 79 88
03 zhang 0906 80 90 89
04 qing 0907 78 89 90
num name cla score1 score2 score3 ave
---------------------------------------------------------------
01 li 0906 89 98 78 88.33
02 wang 0906 89 79 88 85.33
03 zhang 0906 80 90 89 86.33
04 qing 0907 78 89 90 85.67
subject 0 average is 84.00
subject 1 average is 89.00
subject 2 average is 86.25
The file write error
Press any key to continue |
|