全国计算机等级三级网络技术机试练习习题(29)
来源:优易学  2010-1-14 20:23:57   【优易学:中国教育考试门户网】   资料下载   IT书店
  第29套上机考试试题
  已知数据文件IN.dat中存有200个四位数,并已调用读函数RData()把这些数存入数组a中,请编写函数spellVal(),其功能是:把千位数字和十位数字重新组成一个新的二位数ab(新二位数的十位数字是原四位数的千位数字,新二位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的二位数cd(新二位数的十位数字是原四位数的个位数字,新二位数的个位数字是原四位数的百位数字),如果新组成的两个二位数ab-cd≥0 且 ab-cd≤10且两个数均是奇数,同时两个新数的十位数字均不为0,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数count。最后main()函数调用写函数WData(),把结果count以及数组b中符合条件的四位数输出到0UT.dat文件中。
  注意:部分程序已经给出。程序中已定义数组a[200]、b[200],已定义变量cnt。请勿改动数据文件IN.dat中的任何数据及主函数main()、读函数RData()和写函数WData()的内容。 


  第29套试题答案及详解
  【审题分析】分析题目可知,本题只要实现spellVal()函数的功能即可。函数spellVal()要实现的功能是:
  把千位数字和十位数字重新组成一个新的十位数ab(新十位数的十位数字是原四位数的千位数字,新十位数的个位数字是原四位数的十位数字),以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新十位数的个位数字是原四位数的百位数字),如果新组成的两个十位数ab-cd≥0且ab-cd≤10,且两个数均是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数count。因此解答本题的关键在于如何将一个四位数的各位上的数字拆分成单个数字,并将两个单个数字组合成一个两位数。
  【解题思路】对于每一个四位数,用这个四位数除以1000,可得到这个四位数的千位上的数字输给变量thou:这个四位数对1000求余然后再除以100,可得到这个四位数百位上的数字输给变量hun;这个四位数对100求余然后:再除以10,可得到这个四位数卜位上的数字输给变量ten;这个四位数对10求余,可得到这个四位数个位上的数字输给变量data。
  因为thou和data作为重新组成新的两个二位数的十位上数字,所以其值不能为0,因而在组建两个二位数之前,首先要判断thou和data这两个数字小能为0;然后用逻辑表达式(ab-cd)>=0&&(ab-cd)<=1O&&ab%2==1&&cd%2=1来判断实现新组成的两个二位数ab-cd>=0且ab-cd≤10且两个数均为奇数的条件。
  如果上述逻辑表达式成立,则这个四位数是符合题日条件的一个数字,把其存入数组b中,同时计数变量count加1。最后利用两重循环对数组b中元素进行从大到小的排序。
  【参考答案】  


  【易错分析】用求余运算和除法运算求得一个数字各个位上的数字。
  【考点链接】求余运算、逻辑或、逻辑与运算、数组元素从大到小的排序算法。

责任编辑:小草

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