问答题 1.  学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc(),它的功能是:把分数最低的学生数据放在h所指的数组中。注意:分数低的学生可能不止一个。
    注意:部分源程序如下。
    请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
    试题程序:
    #include<stdio.h>
    #deftne M 16
    typedef struct
    {char num[10];
    int s;
    }
    STREC;
    int proc(STREC*a,STREC*b)
    {
    }
    void main()   
    {
    STREC stu[M]={{"GA005",82},{"GA003",75},{"GA002",85},{"GA004",78},{"GA001",95},{"GA007",62},{"GA008",60},{"GA006",85},{"GA015",83},{"GA013",94},{"GA012",78},{"GA014",97},{"GA011",60},{"GA017",65},{"GA018",60},{"GA016",74}};
    STREC h[M];
    int i,n;
    n=proc(stu,h);
    printf("The%d lowest score:\n",n);
    for(i=0;i    printf("%s%4d\n",h[i].num,h[i].s);
    //输出最低分学生的学号和成绩
    printf("\n");
    }
【正确答案】int proc(STREC*a,STREC*b)
   {
   int i,j=0,min=a[0].s;//min是放最低分数的变量
   for(i=0; i<M; i++)
   if(min>a[i].s)  //当有比min更小的数时,把更小数的赋给min
   min=a[i].s;
   for(i=0; i<M; i++)
   if(min==a[i].s)//有可能最小的数不止一个
   b[j++]=a[i];
   return i; //最后把其下标返回给主函数
   }
【答案解析】 要返回分数最低的学生的个数,首先要找出学生中的最低分数,然后将各个学生的成绩与最低分数比较,最后将分数最低的学生的个数返回给主函数。