问题 问答题

已知学生的记录由学号和学习成绩构成,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[i] .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[i].s即可。

单项选择题
判断题