大家帮我来找一个错误,找了半天不知道哪里错了的。
#include<stdio.h>#include<stdlib.h>
#define size 10
struct data{
int chenji;
char name[size];
};
struct sqlist{
struct data *student;
int length;
};
void bincertsort(struct sqlist *l);
main(){
int i,j;
int s=1;
struct sqlist *l=(struct sqlist *)malloc(sizeof(struct sqlist));
printf("请先输入学生的个数:");
scanf("%d",&i);
l->student=(struct data *)malloc((i+1)*sizeof(struct data));
for(j=1;j<=i;j++){
printf("请输入学生的成绩和姓名:");
scanf("%d %s",&(l->student[j].chenji),l->student[j].name);
}
l->length=i;
bincertsort(l);
printf("姓名\t成绩\t名次\n");
for(j=i;j>=1;j--){
printf("%s\t%d\t%d\n",l->student[j].name,l->student[j].chenji,s);
s++;
}
}
void bincertsort(struct sqlist *l){
int i,high,low,m,j;
for(i=2;i<=l->length;++i){
l->student[0]=l->student[i];
while(low<=high){
m=(low+high)/2;
if(l->student[0].chenji<l->student[m].chenji) high=m-1;
else low =m+1;
}
for(j=i-1;j>=high+1;--j) l->student[j+1]=l->student[j];
l->student[high+1]=l->student[0];
}
}
好像是那个排序的子函数出了问题,求高手作解释。