1、计算机三级网络技术机试(上机操作)模拟试卷 42及答案与解析 一、程序设计题 1 已知数据文件 IN39 DAT中存有 300个四位数,函数 ReadData()负责把这些数存人数组 inBu中,请编制一函数 findValue(),其功能是:统计出这 300个数中素数的个数 count,再把所有满足此条件的四位数依次存人数组 outBuf中,然后对数组 outBuf的四位数按从小到大的顺序进行排序,函数 WriteData()负责把数组outBuf中的数输出到 OUT DAT文件中。 例如: 3191是素数,则该数满足条件,存入数组 outBuf中,且个数count=count+1。 123
2、4是非素数,则该数不满足条件,忽略。 注意:部分源程序已给出。 程序中已定义数组: 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();
3、print(“count= d n”, count); for(i=0; ioutBufj) *如果第 i位比它后面的数大,则将两者进行交 换,也即将更小的值放到第 i位 * temp=outBufi; outBufi=outBufj; outBufj=temp; 【试题解析】 本题主要考查素数的判断和排序问题。 判断是否为素数:素数的定义是:若一个数除了其自身和 1再没有其他的除数,则该数就是素数。故用其定义可以很容易判断。在 2到所判断数之间的数进行扫描。若有一个除数,则试教就不是素数。 排序:排序的思想是 (以从小到大为例 ):将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大,则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。