题目描述:现有6名学生需要把他们的数学、语文、英语成绩按总分高低排出名次;
输入:6名学生的数学、语文、英语成绩;
输出:6名学生的数学、语文、英语成绩以及总分,要求按照总分由高分到低分输出,每名学生一行;
#include<stdio.h>
int main()
{
int a[6][4];
int i,j;
for(i=0;i<6;i++) //输入成绩
{
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
a[i][3]=a[i][0]+a[i][1]+a[i][2];
}
for(i=0;i<5;i++) //冒泡排序,注意i<5(防止下标越界且只用排5次)
for(j=0;j<5-i;j++) //每次循环(5-i)位后的已经排好了
{
if(a[j][3]<a[j+1][3])
{
int k;
for(k=0;k<4;k++) //此处易忽视,交换总分时,每门课的成绩也应该交换
{
int t;
t=a[j][k];a[j][k]=a[j+1][k];a[j+1][k]=t;
}
}
}
printf(" 数学 英语 语文 总分\n"); //输出,注意格式
for(i=0;i<6;i++)
{
for(j=0;j<4;j++)
printf("%6d",a[i][j]);
printf("\n");
}
}