1、国家三级(网络技术)机试模拟试卷 222及答案与解析 一、程序设计题 1 已知在文件 IN DAT中存有若干个 (个数 #include #define MAX 200 int inBufMAX; int totleNum=0; *文件 IN DAT中共有多少个正整数 * int totleCnt=0; *符合条件的正整数的个数 * double totleAverage=0 0;平均值 int ReadData(void); void WriteData(void); void findValue(void) void main() int i; system(“CLS“); for(i=0
2、; i0) 如果当前数大于零 totleNum+; 则将总个数加 1 for(j=0; j4; j+) temp=inBufi; 将要进行分解的数据存入 temp中 for(k=0; kj; k+) temp=temp 10; 求第 j位的值 d3-j=temp 10; 先将 temp除以 10的 j次方,再对其求余即可 if(d0+dl+d2+d3) 2!=0) 如果各位数字之和是奇数 totleCnt+; 则使符合条件的计数器加 1 totleAverage=(totleAverage*(totleCnt-1)+inBufi) totleCnt; totleAverage*(totleCnt-1)得到的是前 (totleCnt-1)个数的总和 【试题解析】 本题主要考查数位分解及数据平均值的求法。本程序的步骤是;1将数值送入 temp中。 2数位分解,由 temp 10得到个位数; (temp 10) 1 0得到十位数,依此类推,可得到各位上的数值。 3按照题目所给的条件筛选出数据。 4对选出的数据求平均值,由于本题中的数据量比较大,若采用先将各个值加起来再除以总个数来取平均的话,变量不能存储那么大的数据而导致溢出。本程序采用的方法是; N个数的平均值 =前 (N-1)个数的平均值 *(N-1)+第 N个数 N,采 用这种递推的方法就避免了将大的数据存入变量中而产生溢出。