三级数据库技术机试-227.doc

上传人:scccc 文档编号:13194193 上传时间:2021-12-18 格式:DOC 页数:2 大小:25KB
返回 下载 相关 举报
三级数据库技术机试-227.doc_第1页
第1页 / 共2页
三级数据库技术机试-227.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《三级数据库技术机试-227.doc》由会员分享,可在线阅读,更多相关《三级数据库技术机试-227.doc(2页珍藏版)》请在三一文库上搜索。

1、三级数据库技术机试 -227( 总分: 100.00 ,做题时间: 90 分钟 )、上机题( 总题数: 1,分数: 100.00)1. 文件 IN.DAT 中存有 200 个 4 位整型数,函数 ReadData() 负责将 IN.DAT 中的数读到数组 inBuf 中。请 编写函数 findValue() ,其功能是: 把千位数字和十位数重新组成一个新的十位数 ab( 新十位数的十位数是 原4 位数的千位数, 新十位数的个位数是原 4位数的十位数 ) ,以及把个位数和百位数组成另一个新的十位 数 cd( 新十位数的十位数是原 4 位数的个位数,新十位数的个位数是原 4 位数的百位数 ) ,新

2、组成两个十位 数ab-cd > =0,且ab-cd < =10,且两个数均是奇数。求出满足条件的数,用 count记录下符合条件的数的 个数并按照从小到大的顺序存入数组 outBuf 中。函数 WriteData() 负责将 outBuf 中的数输出到文件 OUT.DAT中并在屏幕上显示出来。注意:部分源程序已给出。程序中已定义数组: inBuf200 , outBuf200 ,已定义变量: count 。 请勿改动主函数 main() 、读函数 ReadData() 和写函数 WriteData() 的内容。 试题程序:#include < stdio.h >#def

3、ine NUM 200int inBufNUM , outBufNUM , count=0 ;void readData() ;void writeData() ;void findValue()void main()int i ;readData() ;findValue() ; writeData() ; printf("count=%d/n" , count) ; for(i=0 ;i < count ;i+) printf("outBuf%d=%d/n" , i , outBufi) ;void readData()FILE*fp ;int

4、 i ;fp=fopen("IN.DAT" , "r") ;for(i=0 ;i < NUM;i+)fscanf(fp , "%d, " ,inBufi) ;fclose(fp) ;void writeData()FILE*fp ; int i ;fp=fopen("OUT.DAT" , "w") ; fprintf(fp , "count=%d/n" ,count) ;for(i=0 ; i < count ; i+) fprintf(fp, "%d,

5、/n" ,outBufi);fclose(fp) ;分数: 100.00 ) 正确答案: (voidindValue()int i ,j ,k,d4 ,temp,minus, ab, cd;for(i=0 ; i < NUM; i+)for(j=0 ; j<4; j+) temp=inBufi ; / 将要进行分解的数据存入 temp 中 for(k=0 ; k< j ; k+)temp=temp/10 ; / 求第 j 位的值时 d3-j=temp%10 ; / 先将 temp 除以 10 的 j 次方,再对其求余即可ab=d0*10+d2 : cd=d3*10+

6、d1;minus=ab-cd :if(minus > =0 && minus< =10&& ab%2!=0&& cd%2!=0)outBufcount=inBufi ;count+ :for(i=0 ; i < count-1 ; i+) / 以下是将数据进行从小到大排序的程序for(j=i+1 ; j < count ; j+)if(outBufi > outBufj) / 如果第 i 位比它后面的数大,则将两者进行交换,也即将更小的值放到第 位temp=outBufi ;outBufi=outBufj ; out

7、Bufj=temp ;)解析: 解析 本题主要考查数位分解及排序。数位分解就是将 n 位数上各个位上的数值单独分离出来。 解决此问题的方法是: 将 n 位数对 10 求余可以将 个位上的数值分离出来。 将这个 n 位数除以 10 以后得到一个 n-1 位数, 则此时 n 位数原来的十位就变成了 n-1 位数的个位,再将此 n-l 位数对 10 求余便可得到原 n 位数的十位。依次类推,按照同样的方法便可将 n 位数各个位上的数值分离出来。程序步骤:将数值送入 temp中;由temp%10得到个位数,(temp/10)%10得到十位数如此可得到各位上的数值;按照题目所给的条件选出数据;对选出的数据进行排序,排序的思想是(以从小到大为 例) ,将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而 使得前面的数据小于后面的数据,达到从小到大排序的目的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1