万能百科  > 所属分类  > 

下列给定程序中,函数fun()的功能是:对N名学生的学习成绩,按从低到高的顺序找出前m(m≤10)名学生来

下列给定程序中,函数fun()的功能是:对N名学生的学习成绩,按从低到高的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

请改正程序中的错误,使它能得到正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

include <conio.h>

include <string.h>

include <stdio.h>

include <alloc.h>

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=calloc(m,sizeof(STU));

for(i=0;i<N;i++)

b[i]=a[i];

for(k=0;k<m;k++)

{

/*************found*************/

for(i=j=0;i<N;j++)

if(b[i].s<b[j],s)

j=i;

/*************found*************/

t[k].s=b[j].s;

b[j].s=100;

}

return t;

}

outresult(STU a[],FILE *pf)

{

int i;

for(i=0;i<N;i++)

fprintf(pf,"NO=%S Mark=%d\n",

a[i].num,a[i].S);

fprintf(pf,"\n\n");

}

main()

{

STU a[N]={{“A01”,77},{“A02”,85},

{“A03”,96},{“A04”,65},{“A05”,75},

{“A06”,96},{“A07”,76},{“A08”,63},

{“A09”,69},{“A10”,78}};

STU *porder;

int i,m;

clrscr();

printf(“*****THE RESULT*****\n”);

outresult(a,stdout);

printf(“\nGive the number of the students who have lower score:”);

scanf(“%d”,&m);

while(m>10)

{

printf(“\nGive the number of the students who have lower score:”);

scanf(“%d”,&m);

}

porder=fun(a,m);

printf(“*****THE RESULT*****\n”);

printf(“The low:\n”);

for(i=0;i<m;i++)

printf(“%s %d\n”,porder[i].num,

porder[i].s);

free(porder);

}

正确答案:

(1)错误:*t=calloc(msizeof(STU)); 正确:t=calloc(msizeof(STU));(2) 错误:for(i=j=0;iN;j++) 正确:for(i=j=0;iN;i++)(3) 错误:t[k].s=b[j].s; 正确:t[k]=b[j];(1)错误:*t=calloc(m,sizeof(STU)); 正确:t=calloc(m,sizeof(STU));(2) 错误:for(i=j=0

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。

标签