1、三级数据库技术机试-26 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:已知学生的记录由学号和三门学习成绩构成,N 名学生的数据已有入 A 数组中。找出各科及格的学生中总成绩最高的学生记录(假定最高成绩的记录中唯一的),通过形参返回。请考生编写函数 mmm(STUa,STU*s)实现程序的要求,最后调用函数 readwritedat()把结果输出到文件out.dat中。例如:KS01 87 60 88KS09 97 59 99KS11 67 67 60则调用该函数后,输出the top:KS01,87, 60, 88#
2、include stdio.h# include string.h# define N 10void readwritedat ();typedef struct sschar num10;int s1, s2, s3;STU;mmm(STU a,STU *s)main ( )STU aN=“01“, 81, 93, 92,“02“, 89, 65, 91,“03“, 66, 55, 73,“04“, 87, 91, 99,“05“, 77, 65, 91,“06“, 90, 55, 73,“07“, 79, 65, 91,“08“, 61, 55, 73,“09“, 80, 93, 92,“
3、10“, 71, 65, 91m;int i;for (i=0; iN; i+ )printf (“No=%s Mark=%d/n“,ai .num, ai .s1,ai .s2,ai.s3);mmm (a, printf(“the highest: %s,%d/n“,m.num,m.s1+m.s2+m.s3);readwritedat ( );void readwritedat ( )FILE *rf, *wf;STU aN ,m;int i;rf=fopen ( “in. dat“, “r“ );wf=fopen ( “out. dar“, “w“ );for (i=0; i10; i+)
4、fscanf (rf, “%s%d%d%d“, a i .hum, mmm(a, fprintf(wf,“the top: %s,%d,%d,%d/n“,m.num,m.s1,m.s2,m.s3);fclose (rf);fclose (wf);(分数:100.00)_三级数据库技术机试-26 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.下列程序的功能是:已知学生的记录由学号和三门学习成绩构成,N 名学生的数据已有入 A 数组中。找出各科及格的学生中总成绩最高的学生记录(假定最高成绩的记录中唯一的),通过形参返回。请考生编写函数 mmm(
5、STUa,STU*s)实现程序的要求,最后调用函数 readwritedat()把结果输出到文件out.dat中。例如:KS01 87 60 88KS09 97 59 99KS11 67 67 60则调用该函数后,输出the top:KS01,87, 60, 88# include stdio.h# include string.h# define N 10void readwritedat ();typedef struct sschar num10;int s1, s2, s3;STU;mmm(STU a,STU *s)main ( )STU aN=“01“, 81, 93, 92,“02
6、“, 89, 65, 91,“03“, 66, 55, 73,“04“, 87, 91, 99,“05“, 77, 65, 91,“06“, 90, 55, 73,“07“, 79, 65, 91,“08“, 61, 55, 73,“09“, 80, 93, 92,“10“, 71, 65, 91m;int i;for (i=0; iN; i+ )printf (“No=%s Mark=%d/n“,ai .num, ai .s1,ai .s2,ai.s3);mmm (a, printf(“the highest: %s,%d/n“,m.num,m.s1+m.s2+m.s3);readwrite
7、dat ( );void readwritedat ( )FILE *rf, *wf;STU aN ,m;int i;rf=fopen ( “in. dat“, “r“ );wf=fopen ( “out. dar“, “w“ );for (i=0; i10; i+)fscanf (rf, “%s%d%d%d“, a i .hum, mmm(a, fprintf(wf,“the top: %s,%d,%d,%d/n“,m.num,m.s1,m.s2,m.s3);fclose (rf);fclose (wf);(分数:100.00)_正确答案:(提示:类型:结构体操作。关键点:根据题目条件进行结构体比较和赋值。1遍历结构体数组。2进行条件判断。3计算相关量。4返回结果结构体。解答:mmm(STU a,STU*s)int i;STU h;/*初始化最高记录*/hs1=0; hs2=0; hs3=0;/*遍历所有记录*/for(i=0; i10; i+)/*挑选合格记录*/if(ais1=60&ais2=60&ais3=60)/*更新最高记录*/if(hs1+hs2+hs3ais1+ais2+ais3)h=ai;/*返回最高记录*/*s=h;)解析: