大榕树 \ 信息学奥赛 \ 解题报告

SGOI11之《数的朗读》

原文链接:http://www.mydrs.org/program/list.asp?id=354

题目描述
  按照读数规则读出给定的数(其绝对值小于10亿)。
分析

  题目中的读数规则较为复杂,分析一下可以发现:对于任意一个数,可以首先对符号位进行处理,若有负号就读出'F'。然后按读数规则读出整数部分。如果有小数部分,则先读出小数点'D',然后依次读出小数部分的每一个数字。

  问题的难点就在于整数部分的朗读,可以分为两种情况:
  (1) 若没有整数部分或整数部分全是零,则直接读出'0'。
  (2) 否则,以数量单位拼读出整数部分;可将整数部分从右向左,每四位分为一段。再从左到右依次读出,并在结尾加上亿'Y'或万'W'。在读数过程中,应注意对于每一段连续的零,只读一个零;若某段连续的零的左侧或右侧不存在非零数字,则这一段零不可以读出。

小结
  这一题规则较为复杂,对字符处理时应仔细,注意考虑特殊情况。
附:源程序参见 ah02t1.pas


作者:
来源:ChinaSchool
时间:2002-05-03

上一篇:SGOI-12友谊赛试题
下一篇:SGOI11之《Kitty猫基因编码》

大榕树 版权所有 ©1999-2006