1、三级网络技术机试-272 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.已知数据文件 m14.DAT 中存有 200 个 4 位数,并已调用读函数 readDat()把这些数存入数组 a 中,请编制一个函数 JsVal(),其功能是:把千位数字和十位数字重新组成一个新的十位数 ab(新十位数的十位数字是原 4 位数的千位数字,新十位数的个位数字是原 4 位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数 cd(新十位数的十位数字是原 4 位数的个位数字,新十位数的个位数字是原 4 位数的百位数字),如果新组成两个十位数 ab-
2、cd=0 且 ab-cd#define MAX 200int aMAX, bMAX,cnt=0;void jsVal()void readDat()int i;FILE *fp;fp = fopen(“IN14.DAT“, “r“);for(i = 0; i MAX; i+) fscanf(fp, “%d“, fclose (fp);main ( )int i;readDat ();jsVal ();printf(“满足条件的数=%d/n“, cnt);for(i = 0; i cnt; i+)printf(“%d“, bi);printf(“/n“);writeDat ();writeDat
3、 ()FILE *fp;int i;fp = fopen(“OUT14.DAT“, “w“);fprintf(fp, “%d/n“, cnt);for(i = 0; i cnt; i+)fprintf(fp, “%d/n“, bi);fclose (fp);(分数:100.00)_三级网络技术机试-272 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.已知数据文件 m14.DAT 中存有 200 个 4 位数,并已调用读函数 readDat()把这些数存入数组 a 中,请编制一个函数 JsVal(),其功能是:把千位数字和十位数字重新组成一
4、个新的十位数 ab(新十位数的十位数字是原 4 位数的千位数字,新十位数的个位数字是原 4 位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数 cd(新十位数的十位数字是原 4 位数的个位数字,新十位数的个位数字是原 4 位数的百位数字),如果新组成两个十位数 ab-cd=0 且 ab-cd#define MAX 200int aMAX, bMAX,cnt=0;void jsVal()void readDat()int i;FILE *fp;fp = fopen(“IN14.DAT“, “r“);for(i = 0; i MAX; i+) fscanf(fp, “%d“, fclo
5、se (fp);main ( )int i;readDat ();jsVal ();printf(“满足条件的数=%d/n“, cnt);for(i = 0; i cnt; i+)printf(“%d“, bi);printf(“/n“);writeDat ();writeDat ()FILE *fp;int i;fp = fopen(“OUT14.DAT“, “w“);fprintf(fp, “%d/n“, cnt);for(i = 0; i cnt; i+)fprintf(fp, “%d/n“, bi);fclose (fp);(分数:100.00)_正确答案:(void jsVal()i
6、nt i,thou,hun,ten,data, j;int ab,cd;for (i=0; i200; i+) thou=ai/1000; /*求四位数的千位数字*/hun=ai%1000/100; /*求四位数的百位数字*/ten=ai%100/10; /*求四位数的十位数字*/data=ai%10; /*求四位数的个位数字*/ab=10*thou+ten; /*把千位数字和十位数字重新组成一个新的十位数 ab*/cd=10*data+hun; /*把个位数字和百位数字组成另一个新的十位数 cd*/if(ab-cd)=0 & (ab-cd)=0 且 ab-cd=0 & (ab-cd)=10 & ab%2=1 & cd%2=1 & ab!=0 & cd!=0)”),如果满足条件,则把原来的 4 位数放到数组 b 中,同时用一个计数器变量 cnt 求出满足条件的 4 位数的个数。(4)对数组 b 中的 4 位数用选择法进行从大到小排序。