学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。 例如,输入的分数是60 69,则应当把分数在60到69的学生数

admin2013-04-02  44

问题 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
    例如,输入的分数是60 69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中将把60放在low中,把69放在heigh中。
    注意:部分源程序在文件PROGl.C文件中。
    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#define N 16
typedef struct
{char num[10];
   int s;
} STREC;
int fun(STREC *a,STREC *b,int l, 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     printf("%s  %4d\n",h.num,h.s);
   printf("\n");
   out = fopen("out.dat","w");
   n=fun(s,h,80,98);
   fprintf(out,"%d\n",n);
   for(i=0;i     for(j=i+1;j       if(h.s>h[j].s) {tt=h ;h=h[j]; h[j]=tt;}
   for(i=0;i     fprintf(out,"%4d\n",h.s);
   fprintf(out,"\n");
   fclose(out);
}

选项

答案{ int i,j=0; for(i=0; i=l&&a[i].s<=h)b[j++]=a[i]; return j; }

解析 (1)在for循环过程中,利用if条件表达式“if(a.s>= l&&a.s<=h)”逐个判断学生结构体中的成绩元素是否满足题目中的范围。
(2)将符合条件的结果存入指定数组,并对统计变量进行加1操作。
转载请注明原文地址:https://kaotiyun.com/show/yDJp777K
0

最新回复(0)