填空题
下列给定程序中,函数proc()的功能是:对M名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<conio.h>
#define M 10
typedef struct ss
{
char num[10];
int order;
}
STU;
STU*proc(STU a[], int m)
{
STU b[M], *tt;
int i, j, k;
1;
for(i=0; i<M; i++)
b[i]=a[i];
for(k=0; k<m; k++)
{
for(i=j=0; i<M; i++)
if(
2)
j=i;
tt[k]=b[j];
b[j].order=0;
}
return
3;
}
void outresuh(STU a[], FILE*pf)
{
int i;
for(i=0; i<M; i++)
printf(pf, "No=%s Mark=%d/n",
a[i].num, a[i].order);
fprintf(pf, "/n/n");
}
void main()
{
STU stu[M]={{"A01", 60}, {"A02", 90},
{"A03", 88}, {"A04", 76}, {"A05", 63},
{"A06", 69}, {"A07", 100}, {"A08", 87},
{"A09", 66}, {"A10", 95}};
STU*porder;
int i, m;
system("CLS");
printf("***The Origial data***/n");
outresult(stu, stdout);
printf("/nGive the numeber of the
students who have betler score: ");
scanf("%d", &m);
while(m>10)
{
printf("/nGive the number of the
studets who have better score: ");
scanf("%d", &m);
}
porder=proc(stu, m);
printf("***THE RESULT***/n");
printf("***The top students***/n");
for(i=0; i<m; i++)
printf("%s%d/n",
porder[i].num, porder[i].order);
free(porder);
}