#include <stdio.h>
#include <string.h>
#define M 3
#define N 4
int main()
{
char num[M][20]={"101","102","103"},name[M][20]={"aaa","bbb","ccc"};
float score[M][N]={65,75,85,95,55,66,77,88,60,70,80,90};
float c[4];//交换成绩时作为中间变量
int i,j,k;
char str1[20];
float sum[M]={0},temp;//temp在判断总分大小中使用
float max[N],min[N];//四门课程中的最高分、最低分
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
sum[i]+=score[i][j];//计算每个学生的总分
}
}
for(j=0;j<N;j++)//得到每门课程的最高分、最低分
{
max[j]=score[0][j];//每列的最高分
min[j]=score[0][j];//每列的最低分
for(i=0;i<M;i++)
{
if(score[i][j]>max[j])
max[j]=score[i][j];
if(score[i][j]<min[j])
min[j]=score[i][j];
}
}
for(i=0;i<M-1;i++) //i:0、1 //按总分排序,从小到大
{
for(k=i+1;k<M;k++)//k:1、2
{
if(sum[k]<sum[i])
{
temp=sum[i]; //按总分排序,换总分
sum[i]=sum[k];
sum[k]=temp;
strcpy(str1, num[i]); //换学号
strcpy(num[i], num[k]);
strcpy(num[k], str1);
strcpy(str1, name[i]); //换名字
strcpy(name[i],name[k]);
strcpy(name[k], str1);
//strcpy(str2,(score[i])); //换成绩
//strcpy((score[i]),(score[j]));
//strcpy((score[j]), str2);
for(j=0;j<N;j++)
{
c[j] = score[i][j];//例如当i=0时,就是先将第一个同学四门课成绩赋值给一维数组c
score[i][j] = score[k][j];
score[k][j] = c[j];
}
}
}
}
printf("所有学生的信息为:\n");
for (i=0;i<M;i++)
{
printf("%10s",num[i]);//输出学号
printf("%10s",name[i]);//输出名字
for (j=0;j<N;j++)
{
printf("%5.1f ",score[i][j]);//输出四门课的成绩
//printf("%5.1f ",float(score[i][j]));//输出四门课的成绩
}
printf("%.1f ",sum[i]);//输出每个学生成绩的总分
printf("%.2f",sum[i]/N);//输出每个学生成绩的平均分
printf("\n");
}
printf("\t最高分 ");
for(j=0;j<N;j++)
printf("%.1f ",max[j]);
putchar('\n');
printf("\t最低分 ");
for(j=0;j<N;j++)
printf("%.1f ",min[j]);
putchar('\n');
return 0;
}