几道PHP算法题目
上一篇 / 下一篇 2007-11-15 12:17:40 / 个人分类:php文集搜罗
查看( 4955 ) /
评论( 41 )
相关阅读:
- PHP常用正则表达式 (04007147, 2007-5-22)
- zz使用PHP 快速生成Flash 动画 (04007147, 2007-5-22)
- PHP中的实用函数 (04007147, 2007-5-24)
- 使用php的几个小技巧zz (04007147, 2007-5-26)
- 12条优化PHP的小提示 (04007147, 2007-6-02)
TAG: php文集搜罗
-
Ghoul 发布于2007-11-15 12:28:53
-
有意思的题目,研究下。
-
linvo 发布于2008-03-13 23:56:36
-
就做个第二题就花了好久
还有点小问题:
数字:142505588
汉字:一亿四千二百五十万五千五百八十八
我感觉这样说更好: 一亿四千二百五十万零五千五百八十八 (万位后面少“零”)
[ 本帖最后由 linvo 于 2008-3-16 10:58 编辑 ]
-
七月十五 发布于2008-03-14 10:21:37
-
算法是很重要的,学好算法打好基础
现实中常见的问题,用PHP做标准格式处理,很有实用意义
[ 本帖最后由 七月十五 于 2008-3-14 10:27 编辑 ]
-
yjxz发布于2008-03-14 12:46:30
-
算法 算到头都痛啊

-
admin123456789 发布于2008-03-14 13:34:08
-
<?php
$string = 145652006;
//清0
function clean($string)
{
if(strpos($string,'00'))
{
$string = str_replace('00','0',$string);
return clean($string);
}
return $string;
}
function d($string)
{
$number = array(0,1,2,3,4,5,6,7,8,9);
$numbig = array('零','一','二','三','四','五','六','七','八','九');
$numwei = array('1'=>'十','2'=>'百','3'=>'千','4'=>'万','5'=>'十','6'=>'百','7'=>'千','8'=>'亿');
$str = intval($string);
$count = strlen($str);
for($i=$count-1;$i>=0;$i--)
{
$a = substr($str,$i,1);
if($a != false) $str1 .= $a.$numwei[$i];
else $str1 .= $a;
}
$str1 = clean($str1);
return str_replace($number,$numbig,$str1);
}
echo d($string);
?>
不知道行不行 写的糊里糊涂的
-
pylong 发布于2008-03-14 14:52:06
-
<?php
function n2c($x) //单个数字变汉字
{
switch($x)
{
case '0': $ch = '零'; break;
case '1': $ch = '一'; break;
case '2': $ch = '二'; break;
case '3': $ch = '三'; break;
case '4': $ch = '四'; break;
case '5': $ch = '五'; break;
case '6': $ch = '六'; break;
case '7': $ch = '七'; break;
case '8': $ch = '八'; break;
case '9': $ch = '九'; break;
}
return $ch;
}
function unit($len){
switch ($len){
case 1:
return null;
break;
case 2:
return '十';
break;
case 3:
return '百';
break;
case 4:
return '千';
break;
case 5:
return '万';
break;
case 6:
return '十万';
break;
case 7:
return '百万';
break;
case 8:
return '千万';
break;
case 9:
return '亿';
break;
default:
return 'error';
}
}
$num=400100;
$num=(int)$num;
$cn_num='';
if (unit(strlen($num))=='error') {
echo '输入非法';
exit();
}
$prev_len=strlen($num);
$current_len=strlen($num);
while (unit(strlen($num))!=null) {
$first_word=substr($num,0,1);
$cn_num.=n2c($first_word);
$cn_num.=unit($current_len);
$num=substr($num,1);
$num=(int)$num;
$prev_len=$current_len;
$current_len=strlen($num);
if (($prev_len-$current_len)>=2&&$num!=0) {
$cn_num.='零';
}
}
if ($num!=0) {
$cn_num.=n2c($num);
}
echo $cn_num;
?>
自己改了一下,发现问题,如果是十万,就变一十万,这个貌似不是很符合习惯,其他还没发现问题,欢迎拍砖,乱写的
-
highjade 发布于2008-03-14 15:49:07
-
研究研究

-
linvo 发布于2008-03-14 20:22:34
-
回复 7# 的帖子
02020202
22002020
读读这两个
“一十万”。。。我的也有这个问题
[ 本帖最后由 linvo 于 2008-3-14 20:26 编辑 ]
-
linvo 发布于2008-03-14 20:25:18
-
回复 6# 的帖子
貌似读反了。。。。
-
shher发布于2008-03-14 23:05:26
-
第二题谁做出准确的了。顶啊。我的也始终不对。
顶啊。。。。
-
试着写程序 发布于2008-03-15 15:41:29
-
我也做不对.
-
linvo 发布于2008-03-16 10:36:27
-
修改了一处对于满9位数字的,万位置全部为0的情况的bug
-
linvo 发布于2008-03-16 11:00:42
-
修正了7楼提出的“一十万”问题
-
cwk32 发布于2008-03-18 20:07:43
-
呃,第二题应该使用数组来做
先把数字变成数组,然后再进行处理,从低位开始
-
Dooy发布于2008-03-18 22:21:08
-
二万零一十
[ 本帖最后由 Dooy 于 2008-3-18 22:32 编辑 ]
-
linvo 发布于2008-03-19 00:18:44
-
回复 16# 的帖子
厉害,好简洁
也有点小问题
000202000
200000200
还有7楼提出的“一十”问题
[ 本帖最后由 linvo 于 2008-3-19 00:21 编辑 ]
-
04007147 发布于2008-03-26 23:03:57
-
这么热闹
-
啊策发布于2008-03-27 18:52:59
-
觉得已经比较完善了
输出:十亿零十
[ 本帖最后由 啊策 于 2008-3-30 03:59 编辑 ]
-
luzhou 发布于2008-03-27 19:52:57
-

-
hubinhust发布于2008-03-28 16:24:05
-
为什么第二题没有人把数字当整数处理来做这个题目。
从个位开始对10取余,输出,原来数字除于10继续。 到4位 加个万字。8位加亿
整个过程递归。
效率应该高多了。
