1、国家三级(网络技术)机试模拟试卷 282及答案与解析 一、程序设计题 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=
2、0; i0)totleNum+; 如果是正数,就将计数器 totleNum加 1 if(inBufi 2) 2! =0) 如果右移一位 后产生的数是奇数 totleCnt+; 将计数器 totleCnt加 1 求满足条件的数的平均值, totleAverage*(totleCnt-1)是前 totleCnt-1个数的总和 totleAverage=(totleAverage*(totleCnt-1)+inBufi) totleCnt; 【试题解析】 本题主要考查数据移位、奇偶判断及平均值求法。 1数据移位;数据左移一位相当于将数据乘以 2,数据右移一位 相当于将数据除以 2。 2奇偶判断;如果一个数对 2求余结果为 0,则该数为偶数;否则,为奇数。 3求平均值;由于本题中的数据量比较大,若采用先将各个值加起来再除以总个数来取平均的话,变量不能存储那么大的数据而导致溢出。本题的程序采用的方法是; N个数的平均值 =前 (N-1)个数的平均值 *(N-1)+第 N个数 N,采用这种递推的方法就避免了将大的数据存入变量中而产生溢出。