在一个二维数组中存放5个人的四门课成绩,计算个人的总成绩,并且按个人的总成绩排序,将结果在屏幕上显示出来。
要求:输出内容以个人的总成绩由高至低的顺序显示,且包括学号,各科成绩,总成绩,姓名。
各位高手帮忙啊,我主要是不知道,怎么把姓名和成绩连起来排序,怎样用冒泡法实现呢?我编的是这样的:
#include<stdio.h>
main()
{
int s[5][6]={{1001,80,75,98,75},{1002,75,95,85,74},{1003,68,85,84,86},{1004,75,85,86,84},{1005,75,84,84,75}};/*定义二维数组,存放成绩*/
int i,j,k,m,t,sum[5],n;
static char a[5][6]={{'t','a','n'},{'l','i'},{'c','h','e','n','g'},{'f','a','n','g'},{'z','h','e','n','g'}};/*定义二维数组,存放姓名*/
clrscr();
printf("before:\n");
printf("---------------------------------------------------------------\n");
printf("Name Acad Math English VC ASP\n");
for(i=0;i<5;i++)
{
for(k=0;k<6;k++)
printf("%c",a[i][k]);
for(j=0;j<5;j++)
printf("%10d",s[i][j]);
printf("\n");
}
printf("----------------------------------------------------------------\n");
printf("\n");
printf("\n");
printf("After:\n");
printf("----------------------------------------------------------------\n");
printf("Name Acad Math English VC ASP total\n");
for(i=0;i<5;i++)
{
sum[i]=0;
for(k=0;k<6;k++)
printf("%c",a[i][k]);
for(j=0;j<5;j++)
printf("%10d",s[i][j]);
for(j=1;j<5;j++)
sum[i]=sum[i]+s[i][j];
printf("%10d\n",sum[i]);
}
for(i=1;i<5;i++)
{for(m=0;m<4;m++)
{if(sum[m]<sum[m+1])
{t=sum[m];sum[m]=sum[m+1];sum[m+1]=t;
for(j=0;j<6;j++)
{n=s[m][j];s[m][j]=s[m+1][j];s[m+1][j]=n;
}
}
}
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
{
printf("%d\t",s[i][j]);
}
printf("%d\n",sum[i]);
}
}
}
帮忙了。