下列给定,函数fun的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 #include #include #include #include #include #define N 10 typedef struct ss { char num[10]; int s; } STU; STU *fun(STU a[], int m) { STU b[N],*t; int i, j,k; /*************found**************/ ____________________ for(i=0;i for(k=0;k { for (i=j=0;i if(b[i].s>b[j].s) j=i; t[k].num=b[j].num; t[k].s=b[j].s; b[j].s=0; } return t; } outresult(STU a[],FILE *pf) { int i; for(i=0;i fprintf(pf, "No=%s Mark=%d\n ", a[i].num, a[i].s); fprintf(pf, "\n\n "); } void main() { STU a[N]={{ "A01 ",81},{ "A02 ",89},{ "A03 ",66},{ "A04 ",87},{ "A05 ",77}, { "A06 ",90},{ "A07 ",79},{ "A08 ",61},{ "A09 ",80},{ "A10 ",71}}; STU *pOrder; int i, m; system("CLS"); printf("*****THE RESULT*****\n"); outresult(a,stdout); printf("\nGive the number of the students who have better score: "); scanf("%d",&m); while(m>10) { printf("\nGive the number of the students who have better score: "); scanf("%d",&m); } pOrder=fun(a,m); printf("***** THE RESULT*****\n"); printf("The top :\n"); for(i=0;i printf("%s %d\n",pOrder[i].num, pOrder[i].s); free(pOrder); }