1、国家三级(网络技术)机试模拟试卷 225及答案与解析 一、程序设计题 1 请编写函数 countValue(),其功能是;计算 500 800之间素数的个数 Count,并按所求素数的值从小到大排序,再计算其间隔加、减之和,即第 1个素数第 2个素数 +第 3个素数一第 4个素数 +第 5个素数 的值 sum。函数 WriteData()负责把结果输出到 OUT DAT文件中。 注意;部分源程序已给出。 请勿改动主函数 main()和写函数 WriteData()的内容。 试题程序; #include int count, sum; void WriteData(); void countVa
2、lue() void main() count=sum=0; countValue(); printf(“count= d n, sum= d n“, count, sum); WriteData(); void WriteData() FILE*fp; fp=fopen(“OUT DAT“, “w“); fprintf(fp, “ d n d n“, count, sum); fclose(fp); 国家三级(网络技术)机试模拟试卷 225答案与解析 一、程序设计题 1 【正确答案】 void countValue() int i, j, flag, temp; int outBuf300;
3、 for(i=500; ioutBufj) *如果第 i位比它后面的数大则将两者进行交换,也即将更小的值放到第 i位 * temp=outBufi; outBufi=outBufj; outBufj=temp; for(i=0; icount; i+) if(i 2=0)sum+=outBufi; 如果下标是偶数则加上该数 else sum=outBufi; 如果下标是奇数 则减去该数 【试题解析】 本题主要考查素数的判断、排序和数组中指定下标元素的求和问题。 1判断是否为素数;素数的定义是;若一个数除了其自身和 1再没有其他的除数,则该数就是素数。故用其定义可以很容易判断。在 2到所判断数之间的数进行扫描,若有一个除数,则该数就不是素数。 2排序;排序的思想是 (以从小到大为例 );将当前数据与其后的各个数据相比较,如果当前的数据比其后的数据大则将两数据进行交换,从而使得前面的数据小于后面的数据,达到从小到大排序的目的。 3计算其间隔加、减之和;判断 下一位数的标号是奇数还是偶数,若下标为偶数 (即第奇数个 )则加,否则则减。