900
81. 在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的4位数据进行升序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。 例:处理前 6012 5099 9012 7025 8088 处理后 9012 6012 7025 8088 5099 部分源程序存在文件prog1.c中。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 /*参考答案*/
int i,j,t;
for(i=0;i<199;i++) for(j=0;j<199;j++)
if(aa[j]00
82. 已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT1.DAT中。 部分源程序存在文件prog1.c中。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 /*参考答案*/
int i,j;
PRO cell;
for (i=0;i<99;i++) for (j=0;j<99;j++)
if(sell[j].je > sell[j+1].je|| sell[j].je==sell[j+1].je && strcmp(sell[j].dm,sell[j+1].dm)>0)
{cell=sell[j]; sell[j]=sell[j+1]; sell[j+1]=cell; }
运行结果前几行:
1003 网上生活 27 1 27 1019 PhotoShop 68 4 272 1003 网上生活 27 11 297 1004 网络互连 45 10 450 1006 3M3.5 3 150 450 1006 3M3.5 3 150 450 1001 软件世界 5 100 500
83. 在文件in.dat中有200组数据,每组有3个数,每个数均是三位数。函数ReadDat()读取这200组数据存放到结构数组aa中,请编制函数jsSort(),其函数的功能是:要求在200组数据中找出条件为每组中的第二个数大于第一个数加第三个数的之和,其中满足条件的组数作为函数jsSort() 的返回值,同时把满足条件的数据存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列(第二个数加第三个数的和均不相等),排序后的结果仍重新存入结构数组bb中,最后调用函数WriteDat()把结果bb输出到文件out.dat中。
部分源程序存在文件prog1.c中。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 /*参考答案*/
int cnt=0,i,j,k=0; Data t;
for (i=0;i<200;i++)
if ((aa[i].x1+aa[i].x3) for (j=0;j if ((bb[j].x2+bb[j].x3)<(bb[j+1].x2+bb[j+1].x3)) {t=bb[j];bb[j]=bb[j+1];bb[j+1]=t;} return cnt; 运行结果: 145,830,672 437,970,476 216,928,490 172,910,500 160,998,362 132,980,365 547,963,380 186,955,356 226,760,496 445,945,255 167,912,283 679,987,192 237,706,448 161,847,284 234,946,160 215,719,353 621,934,133 416,896,162 412,940,106 158,791,241 345,790,241 154,779,239 119,684,306 224,767,201 473,799,159 155,611,340 325,691,252 338,614,239 592,721,102 202,644,178 168,551,267 175,590,196 321,590,169 293,468,171 245,491,128 84. 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:若一个四位数的千位数字上的值大于等于百位数字上的值,百位数字上的值大于等于十位数字上的值,以及十位数字上的值大于等于个位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的数输出到OUT.DAT文件中。 注意:部分源程序存在文件prog1.c中。 程序中已定义数组:a[200],b[200],已定义变量:cnt 请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 /*参考答案*/ int i,j,t; for(i=0;i if(a[i]/1000>=a[i]/100&&a[i]/100>=a[i]/10&&a[i]/10>=a[i]&&a[i]%2==1) b[cnt++]=a[i]; for(i=0;i {t=b[j];b[j]=b[j+1];b[j+1]=t;} 运行结果: 9 5311 7511 7711 8441 8761 8843 9851 9861 9971 85. 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的千位数字上的值加上十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 注意:部分源程序存在文件prog1.c中。 程序中已定义数组:a[200],b[200],已定义变量:cnt 请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 /*参考答案*/ int i,j,t; for(i=0;i if(a[i]/1000+a[i]/10==a[i]/100+a[i]&&a[i]%2==0) b[cnt++]=a[i]; for(i=0;i {t=b[j];b[j]=b[j+1];b[j+1]=t;} 运行结果: 9 1254 2398 2420 3388 4488 6820 7524 7722 8448 87. 已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数连续大于该四位数以前的五个数且该数是偶数(该四位数以前不满五个数,则不统计),则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b中,最后调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 注意:部分源程序存在文件prog1.c中。 程序中已定义数组:a[200],b[200],已定义变量:cnt 请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。 /*参考答案*/ int i,j,t; for(i=5;i<200;i++)

