• 下列给定程序中,函数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;
    int s;
    }STU;
    STU *fun(STU a[],int m)
    {
    STU b,*t;
    int i, j,k;
    /*************found*************/
    *t=calloc(m,sizeof(STU));
    for(i=0;i<N;i++)
    b=a;
    for(k=0;k<m;k++)
    {
    /*************found*************/
    for(i=j=0;i<N;j++)
    if(b.s<b,s)
    j=i;
    /*************found*************/
    t.s=b.s;
    b.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.num,a.S);
    fprintf(pf,"\n\n");
    }
    main()
    {
    STU a={{“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.num,
    porder.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.s=b.s;                                 正确:t=b;(1)错误:*t=calloc(m,sizeof(STU));                 正确:t=calloc(m,sizeof(STU));(2) 错误:for(i=j=0
  • 2021年07月17日 22时00分来自  问答库 >> 计算机类
  • 评论 0
  • 手机玩微博

    手机版 手机端
    Powered by 日新微博 © 2018 - 2020 日新网