c语言学生管理系统 排序问题求教

我在编学生管理系统时,不知道如何在对成绩排序时使学号,姓名跟着成绩排序一起变化。因为我还没学过指针,结构体,链表。所以是用多个数组存储不同数据,保证同一学生信息对应数组元素下标相同的方法在编,所以也希望高手解答时的方法也不涉及指针,结构体,链表的相关知识。我知道有点为难人,总之答的好,我会追加分数的。最好能有作为例子的程序代码啊

我没有过不使用结构体处理这种处理的经历,但想了种方法倒是可以让你试试。

你定义一个char型的数组,用来保存其他数组下标的。在排序时不改变成绩在数组中的顺序,也就是说排序后char型数组中会按顺序保留成绩对应的下标。
如果学号testno[]、姓名name[]、成绩score[],那么定义一个数组sort[]。
如果成绩最高为score[8],则将8存入到sort[0]中,则testno[sort[0]]就是最高成绩的学号。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-12-20
定义一个数组p
然后
for(i=0;i<n;i++)p[i]=i;
然后排序的时候
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(score[p[i]] < score[p[j]]){
swap(p[i],p[j]);
}
这样就可以把成绩按照降序排列
输出的时候
for(i=0;i<n;i++){
printf("%d%s..\n",score[p[i]],name[p[i]]...);
}