数组问题3
输入 5个学生的 姓名,数学分数,英语分数,然后求平均分,然后按平均分高低排下来他的姓名和数学成绩和英语成绩。
回复 楼主 wa5000
个人感觉用2个数组就能够解决问题,呵呵.具体的不是很清楚.
程序代码:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define N 5
struct score
{
char name[10];
float math,eng;
};
void sort(double a[N],struct score s[N]) //排序,用平均值排序,返回结构体变量
{ int i,k,m;struct score t1;double t2;
for(i=1;i<N;i++)
{ m=i-1;
for(k=i;k<N;k++)
if(a[m]>a[k]) m=k;
if(m!=i-1)
{
t1=s[i-1];s[i-1]=s[m];s[m]=t1;
t2=a[i-1];a[i-1]=a[m];a[m]=t2;
}
}
}
main() //主函数
{ struct score s[N]; int i; double avg[N];
for(i=0;i<N;i++)
{
printf("name:");
fflush(stdin);
gets(s[i].name);
printf("maths english:");
scanf("%f%f",&s[i].math,&s[i].eng);
}
for(i=0;i<N;i++)
avg[i]=(s[i].math+s[i].eng)/2;
sort(avg,s);
for(i=0;i<N;i++)
printf("%s\t%.1f\t%.1f\n",s[i].name,s[i].math,s[i].eng);
}