24题 下列程序的功能是:已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a数组中。找出成绩最低的学生记录(假定最低成绩的记录是唯一的),通过形参返回。请编写函数mm(STU a[],STU *s)实现程序要求,最后调用函数reawriteDAT()把结果输出到文件out.dat中。
例如: KS01 87
KS09 67
KS11 97
则调用该函数后,输出The lowest:KS19,67
请勿改动主函数main()和输出数据函数readwriteDAT()的内容。 #include <stdio.h>
#include <string.h>
#include <conio.h>
#define N 10
void readwriteDAT();
typedef struct ss
{char num[10]; int s;}STU;

mmm(STU a[],STU *s)
{

}

main()
{
STU a[N]={ {\ A01\ ,81}{\ A02\ ,89}{\ A03\ ,66}{\ A04\ ,87}{\ A05\ ,77}
{\ A06\ ,90}{\ A07\ ,79}{\ A08\ ,61}{\ A9\ ,80}{\ A10\ ,71}},m;
int i;
clrscr();
printf(" ***** The original data *****\n");
for(i=0;i<N;i++)printf("No=%s Mark=%\n" ,a[i].num,a[i],s);
mmm(a,&m);
printf(" ***** THE RESULT *****\n" );
printf(" The lowest:%s,%d\n" ,m.num,m.s);
readwriteDAT();
}

viod readwriteDAT()
{
FILE *rf,*wf;
STU a[N],m;
int i;

rf=fopen(" in.dat" ," r" );
wf=fopen(" out.dat" ," w" );
for(i=0;i<10;i++)fscanf(rf," %s%d",a[i].num,%a[i].s);
mm(a,&m);
fprintf(wf," The lowest:%s, %d\n" ,m.num,m.s);
fclose(rf);
fclose(wf);
}


注:该题亦是较简单,只要注意对结构体变量的使用方式,元素的使用、变量之间互相
赋值懂了,则这题就不在话下了,我相信你们。
mmm(STU a[],STU *s)
{
int i;
s->s=a[0].s;
for(i=1;i<N;i++)
if(a[i].s<s->s)
*s=a[i];
}

返回南开百题目录

www.163164.cn 联系QQ:3149886