《三级信息管理技术机试真题2006年09月.pdf》由会员分享,可在线阅读,更多相关《三级信息管理技术机试真题2006年09月.pdf(2页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 真题 三级信息管理技术机试真题2006 年 09 月计算机三级信息管理(机试)第 1 题:已知在文件 in dat 中存有若干个(小于 200)的 4 位数字的正整数,函数ReadDat()读取若干个正整数并存人数组xx 中。请编制函数 CalValue(),其功能要求:(1)求出这文件中共有多少个正整数totNum;(2)求这些数中的各位数字之和是奇数的数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz,最后调用函数 writeDat(),把所求的结果输出到文件out.dat中。注意:部分源程序已经给出。请勿改动主函数 main()、读函数 ReadDat()和写函数
2、writeDAq、()的内容。试题源程序#includestdio h#includeconio h#define MAXNUM 200 int xxMASNUM;int totNum=0;int totCnt=0;double totPjz=0.0:int ReadDat(void):void writeDat(void);void CalValue(void)void main()int i;system(cls);for(i=0;i MAXNUM;i+)xxi=0;if(ReadDat()printf(数据文件 INDAT不能打开!007n);return;CalValue();prin
3、tf(文件 INDAT中共有正整数=%d个n,totNum);printf(符合条件的正整数的个数=%d个n,totCnt);printf(平均值:%2fn,totPjz);writeDat();int ReadDat(void)2 FILE*fp;int i=0;if(fp=fopen(INDAT,r)=NULL)return 1;while(!feof(fp)fscanf(fp,%d,xxi+);fclose(fp);return 0;void writeDat(void)FILE*fp;fp=fopen(OUT DAY,w);fprintf(fp,%dn%dn%6.2fn,totNum,
4、totCnt,totPjz);felose(fp);参考答案:void CalValue(void)int i,data;int al,a2,a3,a4;for(i=0:i MAXNUM;i+)if(!xxi)break;/*若 xxi为 0,则跳出循环*/if(xxi 0)totNum+;/*若xxi大 于0,计 数 值 增1*/a1=xxi/1000;/*分离 出元素xxi的千 位*/a2=xx1%1000/100;/*分 离 出 元 素xxi的 百 位*/a3=xxi%100/10;/*分离 出 元 素xxi的 十 位*/a4=xxi%10;/*分离出元素xxi的个位*/if(al+a2
5、+a3+a4)%2)/*若 元 素xxi的 各 位 数 字 之 和 是 奇 数*/totCnt+;/*奇 数 计 数 值 增1*/totPjz+=xxi;/*将满 足条件的xxi累 加进totPjz*/totPjz/=totCnt;/*筛选完毕后,将满足条件数的累加和除以这些数的个数得平均值*/详细解答:本题主要考查的是奇偶数问题,同时考查了数位分解。首先用for 循环遍历数组 xx,对于某 xxi来说,如果为 0 则跳出循环,如果大于 0 则计数值 totNum增 1,使用 Y0和/分离出 xxi的各个位数 a1,a2,a3,a4,然后判断各个位数之和是不是奇数,如果是那么totCnt 自动增 1,并且将该数累加到totPjz中用于求出平均值,当所有元素遍历完后只要totPjz除以个数 totCnt就能得到满足条件的数的平均值。