免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 5439 | 回复: 25
打印 上一主题 下一主题

如何用SHELL编人民币转换程序,请大家帮写一下。  关闭 [复制链接]

gpf_yj 该用户已被删除
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-08-28 23:06 |只看该作者 |倒序浏览
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
2 [报告]
发表于 2003-08-28 23:32 |只看该作者

如何用SHELL编人民币转换程序,请大家帮写一下。

这是你想要的吧~~
http://www.linuxsir.com/postnuke/modules.php?op=modload&name=News&file=article&sid=533&mode=thread&order=0&thold=0

论坛徽章:
0
3 [报告]
发表于 2003-08-29 09:16 |只看该作者

如何用SHELL编人民币转换程序,请大家帮写一下。

搜索一下,以前有人贴过。

论坛徽章:
0
4 [报告]
发表于 2003-09-06 20:25 |只看该作者

如何用SHELL编人民币转换程序,请大家帮写一下。

原帖由 "bjgirl" 发表:
这是你想要的吧~~
http://www.linuxsir.com/postnuke/modules.php?op=modload&name=News&file=article&sid=533&mode=thread&order=0&thold=0
   

     能不能编个在SCO UNIX 下面的 SHELL啊~ ?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2003-09-06 21:13 |只看该作者

如何用SHELL编人民币转换程序,请大家帮写一下。

【本版精华集锦】中有!
http://www.chinaunix.net/forum/viewtopic.php?t=149718
viggy 该用户已被删除
6 [报告]
发表于 2003-09-06 21:59 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2003-09-06 23:21 |只看该作者

如何用SHELL编人民币转换程序,请大家帮写一下。

原帖由 "admirer" 发表:
【本版精华集锦】中有!
http://www.chinaunix.net/forum/viewtopic.php?t=149718
   
不就是本帖嘛?!
唉~~,还是我给帖出来吧~~
  1. #!/bin/bash
  2. #penny_ccf@hotmail.com
  3. #it's ugly, but it works
  4. cconvert(){
  5. declare -a cnum;
  6. declare -a cmag;
  7. cnum[1]="壹"
  8. cnum[2]="贰"
  9. cnum[3]="叁"
  10. cnum[4]="肆"
  11. cnum[5]="伍"
  12. cnum[6]="陆"
  13. cnum[7]="柒"
  14. cnum[8]="拔"
  15. cnum[9]="玖"
  16. cnum[0]="零"
  17. cmag[0]=""
  18. cmag[1]="拾"
  19. cmag[2]="佰"
  20. cmag[3]="仟"
  21. cmag[4]="万"
  22. cmag[5]="拾"
  23. cmag[6]="百"
  24. cmag[7]="千"
  25. tempalpha="$1";
  26. ctempmag=$2;
  27. if [ $tempalpha == "00000000" ] ; then
  28. CSTR="";
  29. return 0;
  30. fi
  31. let templength="${#tempalpha}";
  32. CSTR="";
  33. for ((m=0;m<templength;m++))
  34. do
  35. tempi=${tempalpha:m:1};
  36. let tempj="$templength-$m-1";
  37. if ((( tempi == 0 )) && (( tempj ==4 ))); then
  38. CSTR=$CSTR"万";
  39. elif (( tempi == 0 )); then
  40. CSTR=$CSTR${cnum[0]};
  41. else
  42. CSTR=$CSTR${cnum[$tempi]}${cmag[$tempj]};
  43. fi
  44. done
  45. CSTR=$(echo $CSTR | sed -e 's/零零*/零/g' -e 's/零$//g' -e 's/零零零万//g');
  46. CMAG="";
  47. for ((m=0;m<ctempmag;m++))
  48. do
  49. CMAG=$CMAG"亿";
  50. done
  51. CSTR=$CSTR$CMAG;
  52. }
  53. alpha=$1;
  54. length=${#alpha};
  55. let k="$length/8";
  56. let modl="$length%8";
  57. MYSTR="";
  58. tempstr=${alpha:0:$modl};
  59. if ((modl>0)); then cconvert $tempstr $k; fi
  60. MYSTR=$MYSTR$CSTR;
  61. for ((i=0;i<k;i++))
  62. do
  63. let pos="$i*8+modl";
  64. tempstr=${alpha:$pos:8};
  65. let tempmag="$k-$i-1";
  66. cconvert $tempstr $tempmag;
  67. MYSTR=$MYSTR$CSTR;
  68. done
  69. echo $MYSTR | sed -e 's/亿零万/亿零/g' -e 's/零万/万/g' -e 's/零亿/亿/g' -e 's/零零*/零/g' -e 's/零$//g';
复制代码
   
[来自]: www.linuxsir.com

论坛徽章:
0
8 [报告]
发表于 2003-09-07 18:03 |只看该作者

如何用SHELL编人民币转换程序,请大家帮写一下。

原帖由 "bjgirl" 发表:
不就是本帖嘛?!
唉~~,还是我给帖出来吧~~
   

没有 “角” 和“分”。
还是不完美。

论坛徽章:
0
9 [报告]
发表于 2003-09-08 09:47 |只看该作者

如何用SHELL编人民币转换程序,请大家帮写一下。



  1. #!/bin/ksh
  2. # Program Name : Num2Chn.sh
  3. # Programmer   : 吕永辉(仙桃市信用联社)
  4. # 首先判断输入的是否为数字
  5. printf "%.2f" $1 >/dev/null 2>&1 3>&1 || {
  6.    echo "输入非法!!!";exit
  7. }
  8. # 定义数字数组
  9. Num[0]="零" Num[1]="壹" Num[2]="贰" Num[3]="叁" Num[4]="肆" Num[5]="伍"
  10. Num[6]="陆" Num[7]="柒" Num[8]="捌" Num[9]="玖"
  11. # 定义金额单位数组
  12. Unit[1]="分" Unit[2]="角" Unit[3]="元" Unit[4]="拾" Unit[5]="佰" Unit[6]="仟"
  13. Unit[7]="万" Unit[11]="亿"
  14. # 处理负数的情况(红字)
  15. [ `echo $1 | grep "-"` ] && {
  16. NumStr=`echo $1 | sed 's/^.//'`
  17. RedFlag="(红)"
  18. } || {
  19. NumStr=$1
  20. RedFlag=""
  21. }
  22. # 初始化输入数字数组
  23. i=1
  24. for TmpC in `printf "%.2f" $NumStr | awk -F "." '{print $1$2}' | sed 's/./& /g'`
  25. do
  26.   Nums[$i]=$TmpC
  27.   i=`expr $i + 1`
  28. done
  29. j=${#Nums[@]}       # 为循环计数变量附初值为输入数字的长度
  30. k=1                 # 为循环定位变量附初值(用于确定金额单位)
  31. ChnNum=""           # 初始化大写金额字符串
  32. while
  33.   [ $j -eq 0 ] && break
  34.   [ $k -gt 11 ] && {
  35.     ChnNum=${Num[${Nums[$j]}]}${Unit[`expr $k - 8 `]}$ChnNum
  36.     j=`expr $j - 1`
  37.     k=`expr $k + 1`
  38.     continue
  39. }
  40.   [ $k -gt 7 -a $k -lt 11 ] && {
  41.     ChnNum=${Num[${Nums[$j]}]}${Unit[`expr $k - 4 `]}$ChnNum
  42.     j=`expr $j - 1`
  43.     k=`expr $k + 1`
  44.     continue
  45. }
  46.   ChnNum=${Num[${Nums[$j]}]}${Unit[$k]}$ChnNum
  47. do
  48.   j=`expr $j - 1`
  49.   k=`expr $k + 1`
  50. done
  51. ChnNum=`echo $RedFlag$ChnNum | sed 's/零分/整/' | sed 's/零角/零/g' \
  52.             | sed 's/零拾/零/g' | sed 's/零佰/零/g' | sed 's/零仟/零/g'\
  53.             | sed 's/零整/整/' | sed 's/零零零零万/零/'`
  54. # 下面的循环用于去掉字符串中连续的零
  55. while
  56.   [ `echo $ChnNum | grep "零零"` ] || {
  57.      ChnNum=`echo $ChnNum  | sed 's/零元/元/'| sed 's/零万/万/' \
  58.        | sed 's/零亿/亿/' | sed 's/^元//' | sed 's/^零//' | sed 's/^整$/零元&/`
  59.      break
  60. }
  61. do
  62.   ChnNum=`echo $ChnNum | sed 's/零零/零/g'`
  63. done
  64. echo $ChnNum
  65. (调试环境:SCO OpenServer 5.0.5 、ksh )
复制代码

[/code]

论坛徽章:
0
10 [报告]
发表于 2003-09-09 08:58 |只看该作者

如何用SHELL编人民币转换程序,请大家帮写一下。

[quote]原帖由 "lvgq2001"][/quote 发表:
   

        调试了,执行不了,请大侠指教~!
        返回错误代码:        

  1.               je.sh: Num[0]=零: not found
  2.               je.sh: Num[6]=陆: not found
  3.               je.sh: Unit[1]=分: not found
  4.               je.sh: Unit[7]=万: not found
  5.               je.sh: Nums[1]=0: not found
  6.               je.sh: Nums[2]=0: not found
  7.               je.sh: Nums[3]=0: not found
  8.               je.sh: bad substitution
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP