问答题
学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
例如,输入的分数是60和69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中把60放在low中,把69放在heigh中。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <stdio.h>
#define N 16
typedef struct
{ char num[10];
int s ;
} STREC;
int fun (STREC *a, STREC *b, int 1, int h )
{
}
main ()
{
STREC s [N] ={ { "GA005", 85 }, { "GA003", 76 },
{ "GA002", 69}, { "GA004", 85}, { "GA001", 96 } ,
{ "GA007", 72}, { "GA008", 64}, { "GA006", 87 } ,
{ "GA015", 85}, { "GA013", 94}, { "GA012", 64 } ,
{ "GA014", 91}, { "GA011", 90}, { "GA017", 64 } ,
{ "GA018", 64 } , { "GA016", 72 } };
STREC h [N], tt;
FILE *out;
int i, j, n, low, heigh, t;
printf("Enter 2 integer number low &
heigh: ");
scanf ("%d%d ", &low, &heigh);
if (heigh<low)
{t=heigh;heigh=low; low=t; }
n=fun (s,h, low, heigh);
printf ("The student’s data between
%d--%d: \n ", low, heigh);
for (i=0; i<n; i++)
printf("%s %4d\n ",h[i] .num, h[i].s);
/*输出指定分数范围内的学生记录*/
printf("\n ");
out=fopen ("out74.dat ", "w")
fprintf(out, "%d\n ",n)-
n=fun (s,h, 80, 98);
for (i=0; i<n-1; i++)
/* 分数在80~98之间的学生记录按他数从低到高排序*/
for (j=i+l; j<n; j++)
if (h[i] .s>h [j] .s)
{tt=h [i] ;h [ii =h [j] ;h [j] =tt; }
for (i=0; i<n; i++)
fprintf(out, "%4d\n ",h[i] .s);
fprintf(out, "\n ");
fclose (out);
}
【参考答案】
int fun (STREC *a, STREC *b, int 1, int h ) { int i, j=0; ......
(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)