C语言
用C语言,
金额小写不带格式转换为大写输出算法
输入一个数字字符串,可以使整数,可以使小数。输入范围0- 999 999 999 999.99,输入为对应汉字读法的格式如果没有角分,输出要添加元整
输出没有分位,输出要加角整
阿拉伯数字1,2,3,4,5,6,7,8,9,0对应的汉字为壹贰叁肆....拾
如输入 100 输出 壹佰元整
563923.56 伍拾陆万叁千陆佰贰拾叁元伍角陆份
问题点数:20、回复次数:8Top
1 楼terryjwf(开大奔的帅哥)回复于 2006-03-02 17:20:16 得分 0
用查表法。Top
2 楼fiftymetre(50米深蓝)回复于 2006-03-02 17:34:04 得分 0
http://bbs.chinaunix.net/archiver/?tid-446866.html
找来的,看看吧Top
3 楼fiftymetre(50米深蓝)回复于 2006-03-02 17:34:40 得分 0
查表法,好像也不太好做的吧。有些逻辑的地方,怎么控制啊。?Top
4 楼jixingzhong(瞌睡虫·星辰)回复于 2006-03-02 20:40:59 得分 0
数组, 一个下标对应一个汉字(宽字符),
把输入的数据分割,
然后输出对应汉字 !!
小数点处理下,
之前输出 单位是“元”,
后面有其他的再继续输出,
就是单位要更换一下...
没有的话, 输出 “整” ...Top
5 楼tudoushishei(土豆)回复于 2006-03-03 15:32:10 得分 0
有没有高效的算法?我想到的也类似于楼上的。Top
6 楼jinjiajie(leorio)回复于 2006-03-03 15:39:31 得分 0
查表?0-9一个表,每位的读法一个表如拾佰千万===.....然后一个个加上去?想是那么想,写起来可能碰到其他问题,具体问题具体解决吧,嘿嘿Top
7 楼bombwang(王)回复于 2006-03-03 19:29:05 得分 0
数组怎么样啊Top
8 楼cunsh(村少)回复于 2006-03-03 20:27:21 得分 0
//用汉语读一个整数(如"1024")
#include<iostream>
#include<string>
#include<sstream>
#include<fstream>
#include<algorithm>
using namespace std;
string a[] = { "零", "一" , "二", "三", "四", "五", "六", "七", "八", "九" };
string b[] = { "" , "十" , "百" , "千" };
string c[] = { "" , "万" , "亿" , "万亿" };
void du(const char * temp);
int main()
{
char x[15];
cin >> x;
du(x); //读一个整数的字符串表示
return 0;
}
void du(const char * temp) //读一个整数的字符串表示
{
int len = strlen(temp);
int ling = 0; // 读0标记.
int biaoji = 0; //4位都是0 .则biaoji == 0;
stringstream out; //先输出到字符流;
for (int i=0; i<len; ++i)
{
if (temp[i] != '0') {
if (ling) {
out << a[0];
ling = 0;
}
biaoji = 1;
out << a[ temp[i] - '0'];
out << b[ (len - i - 1) % 4 ];
}
else {
ling = 1;
}
if ( (len - i) % 4 == 1 ) { //输出"亿" "万" 等
if (biaoji) out << c[ (len-i) / 4 ] ;
ling = 0;
biaoji = 0;
}
}
cout << out.rdbuf();
}
Top




