问答题

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把指定分数范围之外的学生数据放在b所指的数组中,分数范围之外的学生人数由函数值返回。 例如,输入的分数是80和89,则应当把分数低于80和高于89的学生数据进行输出,不包含80分和89分的学生数据。主函数中把80放在low中,把89放在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",55},{"GA003",96}, {"GA002",80},{"GA004",68},{"GA001",88}, {"GA007",74},{"GA008",85},{"GA006",99}, {"GA015",90},{"GA013",53},{"GA012",66}, {"GA014",82},{"GA0ll",73},{"GA017",69}, {"GA018",64},{"GA016",86}}; STEC 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 out%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("out23.dat","w"); fprintf(out,"%d\n",n); n=fun(s,h,70,79); for(i=0;i<n-1;i++) /*分数在70~79之外的学生记录按分数从低到高排列*/ for(j=i+l;i<n;j十+) if(h[i].s>h[j].s) { tt=h[i]; h[i]=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 l, int h) { int i,j=0; fo......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

填空题
下列给定程序中,函数fun()的功能是:对N名学生的学习成绩,按从低到高的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include <conio.h>#include <string.h>#include <stdio.h>#include <alloc.h>#define N 10typedef struct SS{char num[10];int s;} STU;STU *fun(STU a[],int m){STU b[N],*t;int i, j,k; *************found************* *t=calloc(m,sizeof(STU));for(i=0;i<N;i++)b[i]=a[i];for(k=0;k<m;k++){ *************found************* for (i=j=0;i<N;j++)if(b[i].s<b[j],s)j=i; *************found************* t[k].s=b[j].s;b[j].s=100;}return t;} outresult(STU a[],FILE *pf){ int i;for(i=0;i<N;i++)fprintf(pf, NO=%S Mark=%d n ,a[i].num,a[i].S);fprintf(pf, n n );}main(){STU a[N]={{ A01 ,77},{ A02 ,85},{ A03 ,96},{ A04 ,65},{ A05 ,75}, { A06 ,96},{ A07 ,76},{ A08 ,63},{ A09 ,69},{ A10 ,78}};STU *pOrder;int i,m;clrscr();printf( *****THE RESULT***** n );outresult(a,stdout);printf( nGive the number of the students who have lower score: );scanf( %d ,&m);while(m>10){printf( nGive the number of the students who have lower score: );scanf( %d ,&m);}pOrder=fun(a,m);printf( *****THE RESULT***** n );printf( The low: n );for(i=0;i<m;i++)printf( %s %d n ,porder[i].num,porder[i].s);free(porder);}