已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun(),该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。己给出函数的首部,请完成该函数。 注意:部分源程序给出如下。 请勿改

admin2010-09-14  24

问题 已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun(),该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。己给出函数的首部,请完成该函数。
   注意:部分源程序给出如下。
   请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
   试题程序:
   #include<stdio. h>
   #include<string. h>
   #include<aonio .h>
   #define N 10
   typedef struct ss
   { char num[10];
     iht s;
   } STU;
   fun(STU ail, STU *s)
   {

   }
   main()
    {
    STU a[N]={ {"A01",81}, {"A02",89},
          { "A03", 66 }, { "A04", 87 }, { "A05", 77 },
          { "A06", 90 }, { "A07", 79}, { "A08", 61 },
          { "A09", 80 ), { "Al 0", 71 } }, m;
    int i;
    clrscr 0;
    printf ("*****The original data*****");
    for (i=0; i<N; i++)
      printf ("No=%s Mark=%d\n", ail] .num,
                  a .s);
    fun (a, &m);
    printf ("*****THE RESULT*****\n");
    printf ("The lowest  :%s,  %d\n",m.num,
              m.s);
    }

选项

答案fun(STU a[], STU *s) { int i; *s=a [0]; for (i=0; i<N; i++) /*先认为第1个值最小*/ if (s->s>a Ii] . s) /*如果在循环的过程中再发现比第1个值更小的则赋给*s*/ *s=a [i]; }

解析 我们先认为第1个值最小,即*s=a[0]语句,如果在循环的过程中再发现比第1个值更小的随即赋给该*s就可以了。另外,还涉及到结构体中的指向运算符,请学习者注意。若要找出最高成绩则if()中的条件改成s->s<a.s即可。
转载请注明原文地址:https://kaotiyun.com/show/SWID777K
0

最新回复(0)