YY成两歩.
1. 分出单位(拾,佰,仟,万,十万,百万,千万,亿,十亿,百亿,千亿,万亿)和数字.
2. (零+单位)*n 变成 "零"
--
http://trydofor.com - Simplicity is everything.
九年义务教育全日制小学数学教学大纲(修订版)
http://math.cersp.com/CourseStandard/CEDU/200509/406.html
二 年 级
教学内容
(2)万以内数的读法和写法。
数数。百位、千位、万位。数的读法、写法和大小比较。
教学要求
2.认识计数单位"百"、"千"和"万",知道相邻两个计数单位之间的十进关系。掌握万以内的数位顺序,会读数、写数,会比较数的大小。
三 年 级
教学内容
(1)亿以内数的读法和写法。
计数单位"十万"、"百万"、"千万"。相邻计数单位间的十进关系。亿以内的数的读法和写法。数的大小比较。以万作单位的近似数。
教学要求
1.认识计数单位"十万"、"百万"、"千万",初步掌握十进制计数法。会根据数级读、写亿以内的数。会根据要求把一个数用四舍五入法省略尾数,写出近
似数。
On Aug 16, 11:55 pm, kid <kid....@gmail.com> wrote:
> 1,我就是想加个'零',比如301===>3佰零12,我学习不好,见笑了~~~小学课本就免了,呵呵
>
> 2009/8/16 Shuo Chen <giantc...@gmail.com>
只要区分出单位或数字就没问题了吧.
kid wrote:
> to tyrdofor:
> 你这个方法遇到亿亿的情况,就不对了,比如1亿亿,你的转换就成了1亿
> 这个问题看似简单,但是要考虑的情况比较多
>
> 谢谢trydofor,many thanks!
>
> 2009/8/17 trydofor <tryd...@gmail.com <mailto:tryd...@gmail.com>>
>
>
> 漫漫长夜,无心睡眠.
>
> YY成两歩.
> 1. 分出单位(拾,佰,仟,万,十万,百万,千万,亿,十亿,百亿,千亿,万亿)和数字.
> 2. (零+单位)*n 变成 "零"
>
原以为是这样
拾 = 10^1
百 = 10^2
千 = 10^3
萬 = 10^4
億 = 10^8
兆 = 10^12 = "万亿"
京 = 10^16 = "亿亿"
垓 = 10^20 = "万亿亿".
杼 = 10^24 = "亿亿亿".
穰 = 10^28 = ... ...
溝 = 10^32
澗 = 10^36
正 = 10^40
載 = 10^44
極 = 10^48
结果:
11111111111234567 居然是这么迷糊的一种汉字组合啊.
一 亿
一千一百一十一 万
一千一百一十一 亿
一千一百二十三 万
四千五百六十七
8个一组,4个一段.无止境.
kid wrote:
> to trydofor:
> 比如:
> 1 0000 0000 0000 0000
>
> 2009/8/17 trydofor <tryd...@gmail.com <mailto:tryd...@gmail.com>>
>
>
> "亿亿",单位而已,有区别么?
> 把有歧义的单位,按无歧义的序列排序.
> "亿亿亿亿","亿亿","亿".
> 或者使用单位文字的最大匹配.
>
> 只要区分出单位或数字就没问题了吧.
>
2009/8/17 Galaxy <gala...@gmail.com>:
--
笑骂由人,洒脱自如!
心若冰清,天塌不惊!
http://www.iron-feet.cn
拿一个 21200101来举例,
1. 把传入的数字补齐12位,前面补0, 000021200101
2. 把数字按四位一段拆开。例如0000 2120 0101
3. 设计一个函数能够得出四位数字的汉字大写。 这个相对简单,可以逐位判断,
int x = 0;
if(a[0] > '0') //千位
{
输出 X 仟
x = a[0] - '0';
}
if(a[1] == '0') //百位
{
if(x >= 0) //如果千位非0则输出,千位也是0就不输出了
{
输出 零
}
}
else
{
输出 X佰
x = x* 10 + a[1];
}
if(a[2] == '0')
{
if(x >= 0 && a[1] != '0') //两千两百零xxx, 但避免 2001这种情况
{
输出 零
}
}
else
{
输出 X 拾
x = x * 10 + a[2]
}
if(a[3] > '0')
{
输出 X
}
4. 然后每段调用上面的输出加上“亿”“万”或者“零”
if(n1 > 0) //n1为以亿为单位的数字
{
输出N1 亿// N1为n1对应的调用上面函数输出的汉字
}
if (n1 > 0 && ( (n2 > 0 && n2 < 1000) || (n2 == 0 && n3 >0)) //万位
输出零的条件
)
{
输出 零
}
if(n2 > 0)
{
输出N2 万
}
if(n3 < 1000 && n2 > 0)
{
输出 零
}
if(n3 > 0)
{
输出N3
}
if( n1 + n2 + n3 == 0)
{
输出 零
}
大概的思路就是如上这样的, 有些细节时间长忘了, 我感觉这方法有一点笨拙,但应该能解决问题。
从这道题我当时得出一个结论,就是把实际问题转换为逻辑步骤的能力是需要长时间锻炼的。面对任何一个数字,绝大多数人(不管会不会写程序)都能读正
确,不信找个小学生或者卖菜的大妈试试,但让他总结出规则来,缺很少有人能全部总结对。 为什么?呵呵
2009/8/18 ppizzq <ppi...@gmail.com>:
> 我在H公司有一次做过这个题,并且通过了所有的测试用例,原题规定最大数字不会超过12位(应该是千亿),我记得当时的解决思路是这样的
>
>
| Standard prefixes for the SI units of measure | ||||||||||||
| Multiples | Name | deca- | hecto- | kilo- | mega- | giga- | tera- | peta- | exa- | zetta- | yotta- | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Symbol | da | h | k | M | G | T | P | E | Z | Y | ||
| Factor | 100 | 101 | 102 | 103 | 106 | 109 | 1012 | 1015 | 1018 | 1021 | 1024 | |
| Subdivisions | Name | deci- | centi- | milli- | micro- | nano- | pico- | femto- | atto- | zepto- | yocto- | |
| Symbol | d | c | m | µ | n | p | f | a | z | y | ||
| Factor | 100 | 10−1 | 10−2 | 10−3 | 10−6 | 10−9 | 10−12 | 10−15 | 10−18 | 10−21 | 10−24 | |
拾 = 10^1
百 = 10^2
千 = 10^3
萬 = 10^4
億 = 10^8
兆 = 10^12 = "万亿"
京 = 10^16 = "亿亿"
垓 = 10^20 = "万亿亿".
杼 = 10^24 = "亿亿亿".
穰 = 10^28 = ... ...
溝 = 10^32
澗 = 10^36
正 = 10^40
載 = 10^44
極 = 10^48