全国计算机等级三级网络技术机试练习习题(42)
来源:优易学  2010-1-14 20:32:19   【优易学:中国教育考试门户网】   资料下载   IT书店

  第42套上机考试试题
  已知数据文件IN.dat中存有200个四位数,并已调用读函数RData()把这些数存入数组a中,请编写函数evenVal(),其功能是:依次从数组a中取出一个四位数,如果该四位数连续大于该双位数以前的5个数且该数是偶数(该四位数以前不满5个数,则不统计),则统计出满足此条件的个数count并把这些四位数按从大到小的顺序存入数组b中。最后调用写函数WData(),把缔果count以及数组b中符合条件的四位数输出到0UT.dat文件中。
  注意:部分源程序已经给出。程序中已定义数组a[200]、b[200],已定义变量count。请勿改动数据文件IN.dat巾的任何数据及主函数main()、读函数RData()和写函数WData()的内容。
  

  第42套试题答案及详解
  【审题分析】分析题目可知,本题只要实现evenVal()函数的功能即可。evenVal()要实现的功能是:依次从数组a中取出一个四位数,如果该四位数连续大于该四位数以前的五个数且该数是偶数(该四位数以前不满五个数,则不统计),则统计出满足此条件的个数count并把这些四位数按从大到小的顺序存入数组b中。因此解答本题的关键在于比较几个四位数的大小。
  【解题思路】对数组a中的数据从第六个到最后一个进行逐个扫描判断其前面连续5个数是召:都小于此数,如果这个条件成立,则设标志变量flag的值为1,否则设置标志变量flag的值为0,并退出循环,进入下一轮循环。当标志变量flag的值为1,并且这个数对2的余数为0时,这个数即是符合题目条件的数,将其输入到数组b中,同时计数变量count加1。最后利用两重循环语句对数组b进行从大到小的排序。
  【参考答案】
  
  
  【易错分析】因为一个四位数要大于其前面连续五个数,所以对数组a中的数据扫描应该从第六个数开始。为了记录数据a[i]前血连续5个数都小于此数,采用标志变量flag进行标记。
  【考点链接】C语言for循环语句、数组排序算法。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训