3dmax跑光子图:请教一个人民币大写的程序

来源:百度文库 编辑:高考问答 时间:2024/04/29 17:49:54
要求:
输入 123.45
输出 壹佰贰拾叁圆肆角伍分

不用DOUBLE,用数组,满足输入金额 理论无穷
(double 最多值到壹亿亿,所以不用)

本人正在写,考虑了多种输入可能,还有格式转化的问题

想知道自己还有那些没有考虑到
用C/C++

呵呵,那多个零怎么解决呢?

还有,用char money[1024]实现理论无限呢?

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

main()

{

double rmb;

char s[80];

char mo[]="**仟**佰**拾**万**仟**佰**拾**亿**仟**佰**拾**万**仟**佰**拾**圆**角**分\n";

char hz[]="零壹贰叁肆伍陆柒捌玖";

int i,n;

printf("人民币小写: ");

scanf("%lf",&rmb);

if(rmb<=0||rmb>=1e16)exit(0);

sprintf(s,"%.2lf",rmb);

for(n=0;s[n]!='.';n++);

strncpy(mo+4*16,hz+2*(s[n+1]-'0'),2);

strncpy(mo+4*17,hz+2*(s[n+2]-'0'),2);

i=15;while(n--)

strncpy(mo+4*(i--),hz+2*(s[n]-'0'),2);

puts(mo+4*++i);

}

这个程序很好实现.不要想太多了.
你会用%吗?.
比如输入54321,你对其模10000 结果是5 然后调用你的swith把5转换为伍输出
然后对54321做减.减掉刚才的模与结果的值,对此为5*10000
结果是4321如此循环到结果为零.对于有小数点的问题,你可以采取把输入值扩大一○○倍的方法.

直接用字符串,C++很好实现的的