| vprofessor 回复于:2004-07-14 21:29:26 |
| 这个程序写的很简练,但是转换后的大写金额不规范啊,有时也不正确。如30.00。转换后为:叁佰零拾零元零角零分 |
| htldm 回复于:2004-07-15 07:17:43 |
| #include<stdio.h>
char str[64] = "币"; char tbl0[] = "零壹贰叁肆伍陆柒捌玖"; char tbl1[] = "万仟佰拾亿仟佰拾万仟佰拾元 角分整"; char* UPMONEY( double mony ) { char buf[17]; int i, j, c, p; sprintf(buf, "%16.2lf", mony); printf( "%s \n", buf ); p = 2; j = 0; for( i = 0; i < 16; i++) { switch( c = buf[i] ) { case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if( j != 0 ) { str[p++] = tbl0[0]; /* 零 */ str[p++] = tbl0[1]; } c = 2 * (c - '0'); str[p++] = tbl0[c++]; /* 数 */ str[p++] = tbl0[c++]; str[p++] = tbl1[2*i]; /* 数的位 */ str[p++] = tbl1[2*i+1]; j = 0; break; case '0': j++; if( ((j<4) && ((i == 4) || ( i == 8 ))) || ( i == 12 ) ) { str[p++] = tbl1[2*i]; /* 亿 万 元 */ str[p++] = tbl1[2*i+1]; } break; case ' ': break; case '.': break; }; } if( (j>=2 ) && ( i == 16 ) ) { str[p++] = tbl1[2*i]; /* 整 */ str[p++] = tbl1[2*i+1]; } str[p] = '\0'; return(str); } main() { double l; char str[64]; printf("please insert a number:"); scanf("%lf",&l); sprintf(str,"%s",UPMONEY(l)); printf("the number is %s",str); } |
| ecloud 回复于:2004-07-16 13:03:22 |
| 我以前有个python写的,算是比较完善的,发在www.linuxforum.net的Python版面,现在公司网络有点问题登不上,你们可以去看看,我都忘得差不多了 |
| hongqi 回复于:2004-07-16 21:59:38 |
| 不错 |
| sqbcai 回复于:2004-07-25 22:32:39 |
| 不知有无shell写的此类程序? |
| sdclearcase/" target="_blank" >ccf 回复于:2004-07-25 23:06:44 |
| 有shell写的,搜索一下. |
| feiyan98 回复于:2004-11-11 20:51:25 |
| 在个位不为0的整数转换时,没有‘整’字。
比如89.00转换后是‘币八十九元’,没有整。 请问该怎样修改?谢谢! |
| 纳兰婷 回复于:2004-11-11 20:53:12 |
| 谢谢~~~收藏 |
| wayy2008 回复于:2005-03-22 19:52:15 |
| [quote:ffa66ec6cd="sqbcai"]不知有无shell写的此类程序?[/quote:ffa66ec6cd]
有,需要的话跟我联系,等我有空传上来看一下也可以. |