假设有5个学生的信息,包括学号和四门课成绩计算个人的总成绩并且按个人的总成绩排序将结果在屏幕显示

#include "stdio.h"
#include "string.h"
#define N 5
int i,j,sum;
void main()
{

char a[N][6];
for(i=0;i<n;i++)
{
printf("请输入的%d个学生的成绩:",i+1);
for(j=0;j<4;j++)
gets(a);
}
for(i=0;i<N;i++)
{
sum=0;
for(j=1;j<4;j++)
sum+=a[i][j];
a[i][5]=sum;
}
for(i=0;i<n;i++)
printf("第%d个学生的总分为:%d\n",i+1,a[i][5]);
fun();
}
void fun()
{
int t[N][6];
for(i=0;i<N-1;i++)

for(j=0;j<N-i-1;j++)
if(a[i][3]<a[i+1][3])
{
t[i][j]=a[i];
a[i][j]=a[i+1][j];
a[i+1]=t[i][j];
}
printf("总成绩由高到低排序:");
for(i=0;i<N;i++)
for(j=0;j<4;j++)
{
printf("%d",a[i]);
printf("\n");
}

}
上面是我做的,前面输入成绩计算是对的,为了节省时间,我只输入两个成绩
后面fun函数是二维数组的交换,哪里错了?
#include "stdio.h"
#include "string.h"
#define N 5
int i,j,k,sum;
int a[N][6];
void fun()
{
int t;
for(i=0;i<N-1;i++)
for(j=0;j<N-i-1;j++)
if(a[i][5]<a[i+1][5])
for(k=0;k<=5;k++)
{
t=a[i][k];
a[i][k]=a[i+1][k];
a[i+1][k]=t;
}
printf("总成绩由高到低排序:");
for(i=0;i<N;i++)

{
printf("%d",a[i][j]);
printf("\n");
}

}
void main()
{

for(i=0;i<N;i++)
{
printf("请输入第%d位学生的成绩:",i+1);
printf("学号 成绩1\t成绩2\t成绩3\t成绩4\n");
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<N;i++)
{
sum=0;
for(j=1;j<5;j++)
sum+=a[i][j];
a[i][5]=sum;
}
for(i=0;i<N;i++)
printf("第%d个学生的总分为:%d\n",i+1,a[i][5]);
fun();
}
运行结果,排序不对?帮我看看fun函数里面哪里错了

#include "stdio.h"
#include "string.h"
#define N 5
int i,j,k,sum;
int a[N][6];
void fun()
{
int t;
for(i=N-1;i>=1;i--)
{
for(k=0;k<i;k++)
{
if(a[k][5]<a[k+1][5])
{
for (j=0;j<N+1;j++)
{
t=a[k][j];
a[k][j]=a[k+1][j];
a[k+1][j]=t;
}
}
}
}

printf("总成绩由高到低排序:");
for(i=0;i<N;i++)
{
for (j=0; j<N+1; j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}

}
void main()
{

for(i=0;i<N;i++)
{
printf("请输入第%d位学生的成绩:",i+1);
printf("学号 成绩1\t成绩2\t成绩3\t成绩4\n");
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<N;i++)
{
sum=0;
for(j=1;j<5;j++)
sum+=a[i][j];
a[i][5]=sum;
}
for(i=0;i<N;i++)
printf("第%d个学生的总分为:%d\n",i+1,a[i][5]);
fun();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-22
464737
第2个回答  2011-12-22
....不懂
第3个回答  2011-12-22
没看懂
相似回答