参考一下,自己去做一下比较好.....
#include "stdio.h"
#define N 3
#define M 2
void my_input(float a[][M+1],int b[])
{
int i,j;
printf("请输入%d个学生的成绩:\n",N);
for(i=0;i<N;i++)
{
printf("请输入学号:\n");
scanf("%d",&b[i]);
printf("请输入%d科成绩:\n",M);
for(j=0;j<M;j++)
{
printf("\n第%d科成绩:",j+1);
scanf("%f",&a[i][j]);
}
}
}
void my_output(float *a1[N],int *b1[N])
{
int i,j,k=1;
printf("学生成绩的输出:\n");
for(i=0;i<N;i++)
{
printf("第%2d名 ",k);
printf("%-10d",*b1[i]);
for(j=0;j<M+1;j++)
{
printf("%-8.2f",*(a1[i]+j));
}
if((i<N-1)&&(*(a1[i]+M)!=*(a1[i+1]+M))) k++;
printf("\n");
}
}
void average(float a[][M+1])
{
int i,j;
float sum,aver=0.0;
for(i=0;i<N;i++)
{
sum=0.0;
for(j=0;j<M;j++)
{
sum+=a[i][j];
}
aver=sum/M;
a[i][M]=aver;
}
}
void sort(float *a1[N],int *b1[N])
{
int i,j,*temp1=NULL;
float *temp2=NULL;
for(i=0;i<N;i++)
{
for(j=i+1;j<N;j++)
{
if(*(a1[i]+M)<*(a1[j]+M))
{
temp1=b1[i];
b1[i]=b1[j];
b1[j]=temp1;
temp2=a1[i];
a1[i]=a1[j];
a1[j]=temp2;
}
}
}
}
void main()
{
float a[N][M+1],*a1[N];
int b[N],*b1[N],i;
for(i=0;i<N;i++)
{
a1[i]=a[i];
}
for(i=0;i<N;i++)
{
b1[i]=&b[i];
}
my_input(a,b);
average(a);
printf("成绩排名:\n");
sort(a1,b1);
printf("名次 学号 各科成绩\n");
my_output(a1,b1);
}