望C 语言高手能够解答

来源:百度知道 编辑:UC知道 时间:2024/05/24 18:39:25
已知某班N(<=50)名学生进行了高数,英语和C语言等3门课程考试,将3门课的成绩计算总分并存放在一个2维数组中,将学生姓名存放在另一个2维字符数组中,按总分(从高到低)将学生姓名排序并输出排序结果(序号和姓名)
下面是我的 第一个学生的数据始终不对
#define N 5
#include <stdio.h>
#include <string.h>
main()
{int score[N][4],i,j,k,t;
char name[N][80],s[80];
for(i=0;i<N;i++)
{flushall();
printf("name:");gets(name[i]);
printf("maths:");scanf("%d",&score[i][0]);
printf("English:");scanf("%d",&score[i][1]);
printf("C language:");scanf("%d",&score[i][2]);
score[i][3]=score[i][0]+score[i][1]+score[i][2];
}
for(i=0;i<=N-1;i++)
{k=i;
for(j=i+1;j<=N;j++)
if(score[k][3]<score[j][3])k=j;
t=score[i][3];
score[i][3]=score[k][3];
score[k][3]=t;
strcpy(s,name[i]);
strcpy(name[i],name[k]);
strcpy(name[k],s);
}
printf("NO&#

1:第一个程序的问题出在排序的过程中,for(j=i+1;j<=N;j++) 错误,j<N才对
2:第二个程序
num[]不能那样赋值
再者,你那个fun函数中的for循环后面多了一个分号