1、国家三级(网络技术)机试模拟试卷 267及答案与解析 一、程序设计题 1 已知数据文件 IN39 DAT中存有 300个四位数,函数 ReadData()负责把这些数存人数组 inBuf中,请编制一函数 findValue(),其功能是;统计出这 300个数中素数的个数 count,再把所有满足此条件的四位数依次存人数组 outBuf中,然后对数组 outBuf的四位数按从小到大的顺序进行排序,函数 WriteData()负责把数组outBuf中的数输出到 OUT DAT文件中。 例如; 3191是素数,则该数 满足条件,存人数组 outBuf中,且个数count=count+1。 1234是
2、非素数,则该数不满足条件,忽略。 注意;部分源程序已给出。 程序中已定义数组; inBuf300, outBuf300,已定义变量; count。 请勿改动主函数 main()、读函数 ReadData()和写函数 WriteData()的内容。 试题程序; #include #define NUM 300 int inBufNUM, outBufNUM, count=0; void ReadData(); void WriteData(); void findValue() void main() int i; ReadData(); findValue(); WriteData(); pr
3、intf(“count= d n“, count); for(i=0; ioutBufj) *如果第 i位 比它后面的数大,则将两者进行交换,也即将更小的值放到第 i位 * temp=outBufi; outBufi=outBufj; outBufj=temp; 【试题解析】 本题主要考查素数的判断和排序问题。 1判断是否为素数;素数的定义是;若一个数除了其自身和 1再没有其他的除数,则该数就是素数。故用其定义可以很容易判断。在 2到所判断数之间的数进行扫描,若有一个除数,则该数就不是素数。 2排序;排序的思想是 (以从小到大为例 );将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。