资源预览内容
亲,该文档总共2页全部预览完了,如果喜欢就下载吧!
资源描述
真题 三级信息管理技术机试真题 2006 年 09 月计算机三级信息管理(机试)第 1 题: 已知在文件 in dat 中存有若干个 (小于 200)的 4位数字的正整数,函数 ReadDat() 读取若干个正整数并存人数组 xx 中。请编制函数 CalValue() ,其功 能要求: (1) 求出这文件中共有多少个正整数 totNum;(2) 求这些数中的各位数 字之和是奇数的数的个数 totCnt ,以及满足此条件的这些数的算术平均值 totPjz ,最后调用函数 writeDat() ,把所求的结果输出到文件 out.dat 中。 注意:部分源程序已经给出。请勿改动主函数 main() 、读函数 ReadDat() 和写函数 writeDAq 、() 的内 容。 试题源程序 #include stdio h #include conio 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 MAXNU;Mi+)xxi=0 ; if(ReadDat() printf( 数据文件 IN DAT不能打开 !007n) ; return ; CalValue() ; printf( 文件 INDAT中共有正整数 =%d个n ,totNum) ; printf( 符合条件的正整数的个数 =%d个 n , totCnt) ; printf( 平均值: %2fn , totPjz) ; writeDat() ; int ReadDat(void)FILE*fp ;int i=0 ;if(fp=fopen(IN DAT, 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,totCnt , totPjz) ; felose(fp) ;参考答案:void CalValue(void)int al , a2, a3, a4; if(!xxi)break if(xxi 0)totNum+ ; a1=xxi/1000 ; a2=xx1%1000/100 ; a3=xxi%100/10 ; a4=xxi%10 ; if(al+a2+a3+a4)%2) totPjz+=xxi ; totPjz*/ /* 若/* 分 离 出 元 素/* 分 离 出 元 素/* 分 离 出 元 素 /* 分 离 出 元 素 /* 若 元 素 xxi totCnt+ ; int i , data ; for(i=0 : i MAXNU;M i+) /* 若 xxi 为 0 ,则跳出循环 */ xxi 大 于 0 , 计 数 值 增 1*/ xxi 的 千 位 */ xxi 的 百 位 */ xxi 的 十 位 */ xxi 的 个 位 */* 将 满 足 条 件 的 totPjz/=totCnt完毕后,将满足条件数的累加和除以这些数的个数得平均值 */的各 位数字之 和是奇 数*/* 奇 数 计 数 值 增 1*/xxi 累 加 进/* 筛选详细解答:本题主要考查的是奇偶数问题,同时考查了数位分解。首先用 for 循环遍历 数组 xx ,对于某 xxi 来说,如果为 0则跳出循环, 如果大于 0 则计数值 totNum 增 1,使用 Y0和/ 分离出 xxi 的各个位数 a1,a2,a3,a4,然后判断各个位数 之和是不是奇数,如果是那么 totCnt 自动增 1,并且将该数累加到 totPjz 中用 于求出平均值,当所有元素遍历完后只要 totPjz 除以个数 totCnt 就能得到满足 条件的数的平均值。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号