1、三级信息管理技术机试-215 及答案解析(总分: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 文件中。注意:部分源程序已经给出。程序中已定义数组 a20
2、0,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 中的元素使用冒泡排序法进行排序。