问答题

学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc(),该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
注意:部分源程序已给出。
请勿改动主函数main和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#define M 12
typedef struct
char num[10];
double s;
STREC;
double proc(STREC*a,STREC*b,int*n)


void main()

STREC stu[M]=f"GA05",85,"GA03",76,
"GA02",69),"GA04",85,"GA01",91,
"GA07",72),"GA08",64,"GA06",87,
"GA09",60,"GA11",79),("GA12",73,
"GA10",90;
STREC h[M];
int i,n;
double ave;
ave=proc(stu,h,&n);
printf("The%d student data which is higher than %7.3f:\n",n,ave);
for(i=0;i<n;i++)
printf("%s%4.1f\n",h[i].num,h[i].s);
printf("\n");

【参考答案】

double proc(STREC*a,STREC*b,int*n)
{
int i;
d......

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

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