编译,组建都没有错误,关键就是输入了之后不输出,可能是输出那块错了,但不知道咋改,求大神解答!代码如下:#include<stdio.h>#include<stdlib.h> #define MaxLen 100typedef struct{ int num; float score;}stu;typedef stu DataType;typedef struct{ DataType data[MaxLen+1]; int length;}SeqList;void CreatList(SeqList *L){ int i,k,n; printf("请输入学生人数(小于等于%d):\n",MaxLen); scanf("%d",&n); i=1; while(n>MaxLen) { if(i<3)/*给三次输入机会*/ { printf("储存空间不足,请重新输入学生人数:\n"); scanf("%d",&n); i++; } else { printf("输入数据不正确,程序将退出!"); exit(1); } } printf("请输入学生学号(int)和成绩(float):\n"); for(i=1;i<=n;i++) scanf("%d%f",&L->data[i].num,&L->data[i].score); L->length=n; return;}void SelectSort(SeqList *L){ int i,j,k; for(i=1;i<L->length;i++) { k=i; for(j=i+1;j<=L->length;i++) if(L->data[j].score>L->data[k].score) k=j; if(i!=k) { L->data[0]=L->data[k]; L->data[k]=L->data[i]; L->data[i]=L->data[0]; } }}void PrintList(SeqList *L){ int i; printf("学生学号和成绩分别为\n"); for(i=1;i<=L->length;i++)/*输出的时候可以让等于n,因为长度会加1,从1开始的*/ printf("%d %5.2f\n",L->data[i].num,L->data[i].score); return;}int main(){ int i; SeqList *L; L=(SeqList*)malloc(sizeof(SeqList)); CreatList(L); SelectSort(L); PrintList(L); return 0;}在线等,希望给出解释。 跪求 跪求,来自学渣的请求
因为你的排序函数有问题,导致代码一直在排序函数中死循环,不能执行后边的输出。我改了下。
#include<stdio.h>好的,谢谢亲!
这程序有一个错误和一个警告。
错误:函数SelectSort的定义函数体中,内循环
for(j=i+1;j<=L->length;i++) //出错,应将i改为j;警告:数组下标最好从0开始: 1.养成习惯
2.函数SelectSort的排列可以在函数内再定义个DateType t;作为交换,而不是用个全局变量.
可是,数组为0的是哨兵呀,中转站,往里存东西用。亲,可以把改好后的代码发给我么!
本回答被提问者采纳