我不会写成void sort(int*)这种,但是写了这个能满足要求,你看看能不能当参考
#include<stdio.h>
int num[20];
struct student
{
char name[20];
int number;
int a;
int b;
int c;
}stu[3];
void sort(int n);
void main()
{
int j=0,k=0;
char i;
do
{
printf("请输入名字:\n");
scanf("%s",&stu[j].name);
printf("请输入序号:\n");
scanf("%d",&stu[j].number);
printf("请输入成绩:\n");
scanf("%d",&stu[j].a);
printf("请输入成绩:\n");
scanf("%d",&stu[j].b);
printf("请输入成绩:\n");
scanf("%d",&stu[j].c);
j++;
printf("请选择是否继续:Y/N");
fflush(stdin);
scanf("%c",&i);
}while(i=='Y'||i=='y');
printf("排序前的详细内容为:\n");
printf("学号 姓名 平均成绩\n");
for(k=0;k<j;k++)
{
printf("\n%d\t%s\t%d\t",stu[k].number,stu[k].name,(stu[k].a+stu[k].b+stu[k].c)/3);
num[k]=(stu[k].a+stu[k].b+stu[k].c)/3;
printf("%d",num[k]);
}
printf("\n");
sort(j);
}
void sort(int n)
{
int aver[20],aver_num,last_max;
int i,j,k;
printf("排序后的详细内容为:\n");
printf("学号 姓名 平均成绩\n");
last_max=100;
for(i=0;i<n;i++)
{
aver_num=0;
k=0;
for(j=0;j<n;j++)
{
if(num[j]<last_max)
{
if(aver_num<num[j])
{
aver_num=num[j];
k=j;
}
}
}
last_max=aver_num;
aver[i]=k;
}
for(k=0;k<n;k++)
{
num[k]=(stu[k].a+stu[k].b+stu[k].c)/3;
printf("\n%d\t%s\t%d\t",stu[aver[k]].number,stu[aver[k]].name,num[aver[k]]);
}
}