1、国家三级(网络技术)机试模拟试卷 260及答案与解析 一、程序设计题 1 文件 IN DAT中存有 200个四位整型数,函数 readData()负责将 IN DAT中的数据读到数组 inBuf中。请编制一函数 findData(),该函数的功能是;依次从数组inBuf中取出一个四位数,如果四位数连续大于该四位数前的 5个数且该数是奇数(该四位数以前不满 5个数,则不统计 ),该数必须能被 7整除,则按照从小到大的顺序存人 outBuf中,并用 count记录下符合条件的数据的个数。函数 writeData()负责将 outBuf中的数据输出到文件 OUT DAT中,并且在屏幕上输出。 注意;
2、部分源程序已给出。 程序中已定义数组; inBuf200, outBuf200,已定义变量; count。 请勿改动主函数 main()、读函数 readData()和写函数 writeData()的内容。 试题程序; #include #define MAX 200 int inBufMAX, outBufMAX, count=0; void findData() void readData() int i; FILE*fp; fp=fopen(“IN DAT“, “r“); for(i=0; ioutBufj) 如果第 i位比它 后面的数大 则将两者进行交换,也即将更小的数放到第 i位 temp; outBufi; outBufi=outBufj; outBufj=temp; 【试题解析】 本题考查的主要是数据的奇偶性判断及数据的排序。基本思想是;1查找符合要求的,利用条件 inBufi 2!=0找出奇数。用该数与其前面的连续5个数相比较,如果有一个数不符合要求 (小于或等于后面的数 ),则可将该数排除,这样便可找出所有符合要求的项。 2将当前数与其后 的各个数相比较,如果当前数比其后的数大,则将两数据进行交换,从而使得前面的数小于后面的数,最终达到从小到大排序的目的。