国家三级(网络技术)机试模拟试卷247(题后含答案及解析)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
国家三级(网络技术)机试模拟试卷247(题后含答案及解析)
题型有:1. 程序设计题
程序设计题
1.文件IN.DAT中存有200个整数,函数read_dat(int inBuf[MAX])负责将这200个数读到数组inBuf[]中。
请编制程序,要求;求出数组inBuf[]中奇数的个数countl和偶数的个数count2,以及数组inBuf下标为奇数的元素值的算术平均值average(保留2为小数),结构输出到OUT.DAT中。
部分程序、读函数read_dat(int inBuf[MAX])及输出格式已给出。
试题程序;#include<stdlib.h>#include<stdio.h>#define MAX 200void read_dat(int inBuf[MAX]){ int i,j;FILE*fp;fp=fopen(“IN.DAT”,”rf”);for(i=0;i<20;i++) { for(j=0;j<10;j++) { fscanf(fp,”%d,”,&inBuf[i*10+j]);printf(“%d”,inBuf[i*10+j]);} printf(“\n”);} fclose(fp);} void main( ) { int countl,count2,inBuf[MAX];float average;FILE*fw;int i,k=0;long j;system(“CLS”);fw=fopen(“OUT.DAT”,”w”);read dat(inBuf);average=0;count1=0;count2=0;printf(“\n\ncount1=%d,count2=%d,average=%6.2f\n”,count1,count2,average);fprintf(fw,”%d\n%d\n%6.2f\n”,count1,count2,average);fclose(fw);}
正确答案:for(1=0;i<MAX;i++){ if(inBuf[i]%2!=0)count1++;//如果该值是奇数,则将计数器count1加1 else count2++;//否则,将计数器count2加1 if(i%2!=0) //如果是奇数{ average+=inBuf[i];//将该值计人总和k++;//计数器加 1 } } average=average /k;//求均值}
解析:本题主要考查依据数组下标对数据进行筛选及平均值的求法。
程序基本步骤是;1.对200个数进行遍历,如果inBuf[i]是奇数,则countl加1;否则,count2加1。
如果当前下标是奇数,则k加1,并将inBuf[i]累加到average上。
2.所有数都判断完成后average=average/k得到平均值。