问答题 1.  学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc(),它的功能是:按分数的高低排列学生的记录,低分在前。
    注意:部分源程序如下。
    请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
    试题程序:
    #include<stdio.h>
    #detine M 16
    typedef struct
    {
    char num[10];
    int s;
    }STREC;
    void proc(STREC stu[])
    {
    }
    void main()
    {
    STREC stu[M]={{"GA005",88},{"GA003",64},
    {"GA002",77},{"GA004",89},{"GA001",54},
    {"GA007",72},{"GA008",72},{"GA006",65},
    {"GA015",83},{"GA013",95},{"GA012",55},
    {"GA014",68},{"GA011",78},{"GA017",53},
    {"GA018",92},{"GA016",82}};
    int i;
    proc(stu);
    printf("The data after sorted:\n");
    for(i=0;i<M;i++)
    {
    if((i)%4==0)
    //每行输出4个学生记录
    printf("\n");
    printf("%s%4d",stu[i].num,stu[i].s);
    }
    printf("\n");
    }
【正确答案】voidproc(STREC stu[])
   {
   inti,j;
   STREC t:
   for(i=1;i<M;i++)    //用冒泡法来实现互换,即把小的放到前面
   for(j=0;j<M-1;j++)
   if(stu[j].s>stu[j+1].s)
   {  //若if成立,则互换
   t=stu[j];
   stu[j]=stu[j+1];
   stu[j+1]=t;
   }
   }
【答案解析】 要实现按分数的高低排列学生的记录,可以用冒泡排序法:将每一个学生的成绩与前面学生的成绩比较,将成绩较低的学生的记录放在前面。