参考下面两个文章吧,这两个文章的代码组合一下,基本能满足你的所有要求
参考代码
#include<stdio.h>
#include<stdlib.h>
#define n 5
typedef struct student{
int cla;
char name[10];
int num;
int score[5];
float avg;
} stu;
void main()
{
int i,j,k;
stu a[n], buf;
for(i=0;i<n;i++)
{
scanf("%d%s%d",&a[i].cla,a[i].name,&a[i].num);
int sum = 0;
for (j=0; j<5; ++j)
{
scanf("%d",&a[i].score[j]);
sum += a[i].score[j];
}
a[i].avg = sum/5.0;
}
for (i=0; i<n-1; ++i) //比较n-1轮
{
for (j=0; j<n-1-i; ++j) //每轮比较n-1-i次,
{
if (a[j].avg < a[j+1].avg)
{
buf = a[j];
a[j] = a[j+1];
a[j+1] = buf;
}
}
}
int t = 0;
float m=-1;
for(i=0;i<n;i++)
{
if (m!=a[i].avg)
t++;
m = a[i].avg;
printf("名次%d,%s,%f\n",t,a[i].name,a[i].avg);
}
}
如有帮助,望采纳!谢谢!