C语言学生管理系统排序代码问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 04:07:17
void Sort_by_score(Student stud[],int n)
{int i,j,*p,*q,s;
char t[10];
for(i=0;j<n-1;i++)
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j+1].score,stud[j].score)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
输入多位学生成绩资料后,不能排序,不知道问题在哪,代码贴上来了

大哥,
1.
for(i=0;j<n-1;i++)
改为:
for(i=0;i<n-1;i++)

2。
根据你代码里面*p,*q的类型来看,
stud[j+1].score,stud[j].score这两个成员应该也是int型的。

int型比较大小,用if(strcmp(stud[j+1].score,stud[j].score)>0)这个肯定不行,
直接用if(stud[j+1].score>stud[j].score)就好了

for(i=0;j<n-1;i++)
j<n-1写错了吧