#include<stdio.h>
#include<stdlib.h>
#define N 15
#define max 5
struct Score
{
float yu;
float shu;
float wai;
};
struct Student
{
char xh[12];
char name[10];
struct Score c;
};
void Pai(struct Student *s);
int main()
{
struct Student s[N];
int i;
for(i=0;i<N;i++)
{
printf("请输入第%d位学生的学号姓名和三门课成绩:",i+1);
scanf("%s %s %f %f %f",s[i].xh ,s[i].name ,&s[i].c.yu ,&s[i].c.shu ,&s[i].c.wai );
}
Pai(s);
/*
测试是否输出成功,表示到这里为止都是正确的,方便后面检查错误缩小范围
for(i=0;i<N;i++)
{
printf("%s, %s ,%.1f ,%.1f, %.1f\n",s[i].xh ,s[i].name ,s[i].c.yu ,s[i].c.shu ,s[i].c.wai );
}
*/
FILE *fp1,*fp2;
fp1=fopen("sum_max.txt","w");
fp2=fopen("avg_min.txt","w");
if(fp1==NULL||fp2==NULL)
{
printf("文件打开失败!!");
exit(0);
}
for(i=0;i<max;i++)
{
fprintf(fp1,"%s, %s ,%.1f ,%.1f, %.1f\n",s[i].xh ,s[i].name ,s[i].c.yu ,s[i].c.shu ,s[i].c.wai);
}
for(i=max;i<N;i++)
{
fprintf(fp2,"%s, %s ,%.1f ,%.1f, %.1f\n",s[i].xh ,s[i].name ,s[i].c.yu ,s[i].c.shu ,s[i].c.wai);
}
fclose(fp1);
fclose(fp2);
return 0;
}
void Pai(struct Student *s)
{
struct Student temp;
int i,j;
float av=0;
for(i=0;i<N;i++)
{
for(j=0;j<N-i-1;j++)
{
if((s[j].c .yu +s[j].c.shu+s[j].c .wai)/3<(s[j+1].c .yu +s[j+1].c .shu+s[j+1].c .wai)/3)
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
}
学生信息包括:学号,姓名,语文、数学、英语成绩,从键盘输入15个学生信息,将之按照总分排序最高的前5个学生信息保存到sum_max.txt中,将均分最低的排序前10个学生信息保存在avg_min.t
最新推荐文章于 2022-11-15 21:18:12 发布