#include <stdio.h>
typedef struct student
{
char number[20];
char name[10];
float score[3];
float average;
}stu;
void average(stu s[],int n)
{
int i;
for( i=0;i<n;i++)
s[i].average =(float)((s[i].score[0]+s[i].score[1]+s[i].score[2])/3.0);
}
void order(stu s[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(s[i].average<s[j].average)
{
struct student temper;
temper=s[i];
s[i]=s[j];
s[j]=temper;
}
}
void show(stu s[],int n)
{
int i;
for( i=0;i<n;i++)
printf("%s\t%s\t%f\t%f\t%f\t%f\n",s[i].number,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2],s[i].average);
}
int main()
{
int i=0,flag=1;
stu s[100];
while(flag)
{
printf("输入学号,姓名和三门课的成绩:\n");
scanf("%s%s%f%f%f",s[i].number,s[i].name,&s[i].score[0],&s[i].score[1],&s[i].score[2]);
i++;
printf("继续输入 选择 1,否则 输入 0:\n");
scanf("%d",&flag);
}
printf("the order of the score is:\n");
printf("学号\t姓名\t语文\t\t数学\t\t英语\t\t平均成绩\n");
average(s,i);
order(s,i);
show(s,i);
}
温馨提示:答案为网友推荐,仅供参考