问答题
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; //最后把其下标返回给主函数
}
【答案解析】 要返回分数最低的学生的个数,首先要找出学生中的最低分数,然后将各个学生的成绩与最低分数比较,最后将分数最低的学生的个数返回给主函数。