用结构体比较方便易懂,我用结构体帮你做了一下,你可以看一看,可以运行的,我试过了。
创新互联建站-专业网站定制、快速模板网站建设、高性价比延长网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式延长网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖延长地区。费用合理售后完善,十年实体公司更值得信赖。
#includestdio.h
#define N 4
#define M 5
struct student//建立学生数据结如源构体
{
char name[15];
float score[M];
float ave;
}stu[N];
void average(struct student stu[])//求平均成绩函数
{
int i,j,k;
float t;
for(i=0;iN;i++)
{
for(j=1;jM;j++)//冒泡排序将5个评委评分从低到高排列,然后取中间的评分求平均值。
for(k=0;kM-j;k++)
if(stu[i].score[j]stu[i].score[j+1])
{
t=stu[i].score[j];
stu[i].score[j]=stu[i].score[j+1];
stu[i].score[j+1]=t;
}
for(j=1;jM-1;j++)//历橡和去掉最高和最低分后求平均分
{
stu[i].ave+=stu[i].score[j];
}
stu[i].ave/=M-2;
}
}
void sort(struct student stu[])//排序函数
{
int i,j;
struct student temp;
for(i=1;iN;i++)//冒泡排序法
for(j=0;jN-i;j++)
if(stu[j].avestu[j+1].ave)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
main()
{
int i,j;
for(i=0;iN;i++)//输入学生数据
{
printf("请肢盯输入第%d个学生的姓名:",i+1);
scanf("%s",stu[i].name);
for(j=0;jM;j++)
{
printf("请输入该生第%d个评委的评分:",j+1);
scanf("%f",stu[i].score[j]);
}
}
average(stu);//执行函数
sort(stu);
printf("\n按平均成绩逆序输出为:\n");//逆序打印数据
printf("姓名 \t成绩\n");
for(i=0;iN;i++)
printf("%s \t%.2f\n",stu[i].name,stu[i].ave);
}
希望可以帮到你,呵呵