3dmax跑光子图:请教一个人民币大写的程序
来源:百度文库 编辑:高考问答 时间:2024/04/29 17:49:54
要求:
输入 123.45
输出 壹佰贰拾叁圆肆角伍分
不用DOUBLE,用数组,满足输入金额 理论无穷
(double 最多值到壹亿亿,所以不用)
本人正在写,考虑了多种输入可能,还有格式转化的问题
想知道自己还有那些没有考虑到
用C/C++
呵呵,那多个零怎么解决呢?
还有,用char money[1024]实现理论无限呢?
输入 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++很好实现的的