问题 问答题

学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc(),它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
例如,输入的分数是70和79,则应当把分数在70到79的学生数据进行输出.包含70分和79分的学生数据。主函数中把70放在low中,把79放在heigh中。
注意:部分源程序已给出。
请勿改动主函数main和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#define M 16
typedef struct
char num[10];
int s;

STREC:
int proc(STREC*a,STREC*b,int 1,int h)


void main()

STREC stu[M]="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[M];
int i,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=proc(stu,h,low,heigb);
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");

答案

参考答案:int proc(STREC*a,STREC*b,int 1,int h)
{
int i,j=0;
for(i=0;i<M;i++) 从第0个到第M-1个学生开始比较
if(a[i].s>=1&&a[i].s<=h) 通过if语句来判断是否在1与h之间
b[j++]=a[i]; 把符合条件的学生数据放到b结构体中
returnj; 最后把学生的个数返回到主函数中
}

解析: 要找出指定分数范围内的学生,就需要将每一个学生的成绩与指定的分数范围相比较,将每一个符合的数据记录放在数组b中,最后将符合的学生个数返回主函数。

选择题
填空题