#include<stdio.h>
#include<string.h>
#include<math.h>
#define N  3 /*假设三名学生*/
struct stu{ 
	char no[8];
	char name[10];
	float score[3];
	float aver;
};

void dataIn(struct stu *s)/*输入数据并计算平均值*/
{
	int i,j;
	float sum;
	char temp[10];
	printf("\n input no,name,score(1~3):");
	for(i=0;i<N;i++)
	{
		printf("\nstudent %d: \n",i+1);
		sum=0;
		printf("no:");  gets(s[i].no);
		printf("name:"); gets(s[i].name);
		for(j=0;j<3;j++)
		{
			printf("score %d: ",j+1);  
			gets(temp);
			s[i].score[j]=atof(temp);/*将字符串转换为浮点数*/
			sum+=s[i].score[j];
		}
		s[i].aver=sum/3;
	}	
}

void sort(struct stu *s)
{
	int i,j,k;  
	struct stu  t;
	for(i=0;i<N-1;i++)
{ 
		k=i;
		for(j=i+1;j<N;j++)/*找到平均值最大的数组下标*/
			if(s[j].aver>s[k].aver)k=j;
		if(k!=i)
		{
			t=s[k];s[k]=s[i];s[i]=t;
		}
	}
}

void output(struct stu *s)
{ int i; 
printf("\n no     name            score1   score2  score3   aver");
  for(i=0;i<N;i++)
  { 
	printf("\n %-8s %-10s", s[i].no,  s[i].name);
printf("%8.2f %8.2f %8.2f %8.2f", s[i].score[0], s[i].score[1],   s[i].score[2],s[i].aver);
  }
}

main()
{
	struct stu sc_list[N];
	dataIn(sc_list);
	sort(sc_list);
	output(sc_list);
}
