问答题 给定程序MODI1.C中函数fhn的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #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**********/ t=(STU *)calloc(sizeof(STU),m) for(i=0; i b[j] .s) j=i; /**********found**********/ t(k)=b(j); b[j].s=0; } return t; } outresult(STU a[], FILE *pf) { int i; for(i=0; i10) { 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
【正确答案】正确答案:(1)t=(STU*)calloc(sizeof (STU),m); (2)t[k]=b[j];
【答案解析】解析:(1)题干中要求结构体STU类型的m个学生放在动态分配的连续存储区中,“t=(STU*)calloc(sizeof(STU),m)”语句没有使用分号“;”结束,因此,需要在语句结尾处加分号。calloc函数是C语言的动态分配函数,分配存储空间。 (2)第二个标识下是将b数组拷贝到t数组,在C语言中,数组元素的访问使用中括号“[]”而不是圆括弧“()”,因此,第二标识下应改成“t[k]=b[j];”。