1、全国计算机等级考试三级信息管理技术机试真题 2007年 9月及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.已知数据文件 in.dat中存有 200个 4位数,并已调用读函数 ReadDat()把这些数存入数组 a中,请考生编制一函数 jsval(),其功能是:如果 4位数各位上的数均是奇数,则统计出满足此条件的个数 cnt并把这些 4位数按从大到小的顺序存入数组 b中。最后 main()函数训用写函数 writeDat()把结果 cnt及数组 b中符合条件的 4位数输出到 out.dat文件中。注意:部分源程序已经给出。程序中已定义数组
2、a200,b200,已定义变量:cnt。请勿改动数据文件 in.dat中的任何数据、主函数 main()、读函数 readDat()和写函数 writeDat()的内容。试题源程序#includestdioh#define MAX 200int aMAX,KMAX,cnt=0;void writeDat();void JsVal()void teadDat()int i;FILE*fp;fp=fopen(“indat“,“r“):for(i=0;iMAX;i+)fscanf(fp,“%cr,bi=bEj;bj=k;)解析:解析 本题主要考查的是数位分解问题。本题主要考查的知识点包括:C 语言循环结构,if 判断语句和逻辑表达式,以及分解多位整数的算术运算。首先用 for循环和变量 i遍历数组的每个元素,对于某一元素 ai,用%和/运算将各个位数分解出来,存放到数组 ss中,使用 for循环和变量 j判断数组 ss中各个数是否都是奇数,如果是则标志 flag置为 1,有一个是偶数则置为 0并且跳出循环,如果 flag为1,则说明满足都是奇数的条件,将该数 at存入数组 b中,统计变量 cnt增 1,当所有元素遍历完后给数组 b中的元素使用冒泡排序法进行排序。