新微赢技术网
标题:
[求助]编一个把数字转化成汉字念法的程序
[打印本页]
作者:
阳光aiq浪子
时间:
2009-11-4 00:31
标题:
[求助]编一个把数字转化成汉字念法的程序
编写程序使能够输入一个数字,把他的汉字念法显示在屏幕上.
例如:您输入14785,
输出结果为:一万四千七百八十五.
到万就可以了,多了更好,有能力的高手谢谢帮哈忙!!!
油箱:ghostzwn2008@126.com
作者:
逍遥
时间:
2009-11-4 00:31
我只是学几天的新手,用目前想到的换算...(数学跟本没什么概念,以下慢慢实验出来的公式)
换算好之后,如果变成汉字就好办了,但是我不会,没学到足够语法用,不好意思...
(Dev C++ 测试可用)
补充:公式是利用int没有小数点的”整数”特性算的,无条件去掉了小数点,
(假如结果需要小数点显示,这个公式是有问题的.)
#include <iostream>
using namespace std;
int main()
{
int qX=0;
int x0,x1,x2,x3,x4;
cout <<"请输入数字(5位数内): ";
cin >> qX;
x0 = qX/10000;
x1 = qX%10000/1000; //1万的余数就是千,有几千呢?? ,再除以1000就是了.
x2 = qX%10000%1000/100; //万的余数是千,千的余数剩百,几百再除以100就是了.
x3 = qX%10000%1000%100/10;//同上推演下来...
x4 = qX%10000%1000%100%10;//同上推演下来...
cout << x0 <<"万";
cout << x1 <<"千";
cout << x2 <<"百";
cout << x3 <<"拾";
cout << x4 <<"." <<endl;
return 0;
}
作者:
芙蓉泣露
时间:
2009-11-4 00:31
//哈哈,研发出来了,试好久耶,成功!!
#include <iostream>
using namespace std;
string aX(int);
int main()
{
int qX=0;
int x0,x1,x2,x3,x4;
cout <<"请输入数字(5位数内): ";
cin >> qX;
x0 = qX/10000;
x1 = qX%10000/1000; //1万的余数就是千,有几千呢?? ,再除以1000就是了.
x2 = qX%10000%1000/100; //万的余数是千,千的余数剩百,几百再除以100就是了.
x3 = qX%10000%1000%100/10;//同上推演下来...
x4 = qX%10000%1000%100%10;//同上推演下来...
cout << aX(x0) <<"万";
cout << aX(x1) <<"千";
cout << aX(x2) <<"百";
cout << aX(x3) <<"十";
cout << aX(x4) <<"." <<endl;
return 0;
}
string aX (int ok)
{
string aa;
switch(ok)
{
case 0:
aa="零";
break;
case 1:
aa="一";
break;
case 2:
aa="二";
break;
case 3:
aa="三";
break;
case 4:
aa="四";
break;
case 5:
aa="五";
break;
case 6:
aa="六";
break;
case 7:
aa="七";
break;
case 8:
aa="八";
break;
case 9:
aa="九";
break;
return aa;
}
}
作者:
金马
时间:
2009-11-4 00:31
// 不用多说,上面的加强版,有关于”零”的显示时机修正.
// 自己研究出来的,因为刚学不久,可能方法有点怪怪的,数目太大可能就不行了.
// 目前是6位数字的判断. (Dev C++)
//再一次修正(2006-09-25)
#include <iostream>
#include <climits> //限制 int qX 范围为int最大值,避免输入的数目太大,造成程序误判.
using namespace std;
string aX(int);
int main()
{
int qX = INT_MAX; //储存输入值,并限范围为int最大值.
int x0,x1,x2,x3,x4,x5;
cout <<"请输入数字(6位数内): ";
cin >> qX;
x5 = qX/100000;
x4 = qX%100000/10000;
x3 = qX%100000%10000/1000; //1万的余数就是千,有几千呢?? ,再除以1000就是了.
x2 = qX%100000%10000%1000/100; //万的余数是千,千的余数剩百,几百再除以100就是了.
x1 = qX%100000%10000%1000%100/10;//同上推演下来...
x0 = qX%100000%10000%1000%100%10;//同上推演下来...
if(qX>999999){cout <<"数字太大"; return 0;}
if(x5!=0){cout << aX(x5) <<"十";}
if(x5!=0 && x4==0){cout <<"万";}
if(x4!=0){cout << aX(x4) <<"万";}
if(x5!=0 && x4!=0 && x3==0){cout <<"零";}
if(x5!=0 && x4==0 && x3==0){cout <<"零";}
if(x3!=0){cout << aX(x3) <<"千";}
if(x3!=0 && x2==0){cout <<"零";}
if(x2!=0){cout << aX(x2) <<"百";}
if(x2!=0 && x1==0){cout <<"零";}
if(x1!=0){cout << aX(x1) <<"十";}
if(x0==0){cout <<endl;}
if(x0!=0){cout << aX(x0) <<endl;}
return 0;
}
string aX (int ok)
{
string aa;
switch(ok)
{
//case 0:
// aa="零";
//break;
case 1:
aa="一";
break;
case 2:
aa="二";
break;
case 3:
aa="三";
break;
case 4:
aa="四";
break;
case 5:
aa="五";
break;
case 6:
aa="六";
break;
case 7:
aa="七";
break;
case 8:
aa="八";
break;
case 9:
aa="九";
break;
return aa;
}
}
作者:
1OOOO
时间:
2009-11-4 00:31
谢谢拉!!
作者:
⿴°愛丶°牠
时间:
2009-11-4 00:31
不过运行是好象有个错误!!
作者:
灬☆爱你
时间:
2009-11-4 00:31
测试过可以用的,看有没有少符号没复制到.或者说系统语系不一样
中文的繁体和简体是不同互通的,有乱码执行就会出错.
这是Dev-C++写的,其它的没试过…
很多代码我用Dev-C++也是错误,我不知道这论坛都用什么语言…
这程序不是很好,因为中文的”零”出现时机很难判断,
位数太大的话,以我几天的功力可写不出精确的程序.
不好意思…只能这样子^^”
补充:
若用其它编译器可能要改…
{iostream> 加个h之类的..<iostream.h>
或是改int main() 变成void main()
大概是这类错误…因为我下过这里的东西,
都要改这些才能在Dev C++用,有的不会改就无法用= =
还有要用C++编译不能用C,这二个是不一样的.
作者:
冰美人
时间:
2009-11-4 00:31
//这是MS-VC++ 6.0写的,跟Dev-C++差好多,
//用了很久都没找出方法在VC++ 6开头使用string的自定函数.
//上面的只要using namespace std;搬到int main()里就剩3个问题了.
//也就是上面Dev-C++写的第二行string aX(int)这行搞定就可以.
//但是我都用不出来,因为VC++没用过,又刚学DevC++只好改写.
//问题就在string 在第二行不能被接受….
//
//以下是改写成MS-VC++ 6.0版的,但”零”没有特别处理,
//如何改善和精简程序,请自行研究了
//我的功力在VC++ 6只能写到此程度…不好意思.
#include <iostream>
#include <string>
int main()
{
using namespace std;
int qX=0;
int x0,x1,x2,x3,x4;
cout <<"请输入数字(5位数内): ";
cin >> qX;
x4 = qX%1000000%100000/10000;
x3 = qX%1000000%100000%10000/1000; //1万的余数就是千,有几千呢?? ,再除以1000就是了.
x2 = qX%1000000%100000%10000%1000/100; //万的余数是千,千的余数剩百,几百再除以100就是了.
x1 = qX%1000000%100000%10000%1000%100/10;//同上推演下来...
x0 = qX%1000000%100000%10000%1000%100%10;//同上推演下来...
if(qX>99999){cout <<"数字太大"; return 0;}
string aa0,aa1,aa2,aa3,aa4;
//万位数
if(x4 == 0){aa4="零";}
if(x4 == 1){aa4="一";}
if(x4 == 2){aa4="二";}
if(x4 == 3){aa4="三";}
if(x4 == 4){aa4="四";}
if(x4 == 5){aa4="五";}
if(x4 == 6){aa4="六";}
if(x4 == 7){aa4="七";}
if(x4 == 8){aa4="八";}
if(x4 == 9){aa4="九";}
cout << aa4 <<"万";
//千位数
if(x3 == 0){aa3="零";}
if(x3 == 1){aa3="一";}
if(x3 == 2){aa3="二";}
if(x3 == 3){aa3="三";}
if(x3 == 4){aa3="四";}
if(x3 == 5){aa3="五";}
if(x3 == 6){aa3="六";}
if(x3 == 7){aa3="七";}
if(x3 == 8){aa3="八";}
if(x3 == 9){aa3="九";}
cout << aa3 <<"千";
//百位数
if(x2 == 0){aa2="零";}
if(x2 == 1){aa2="一";}
if(x2 == 2){aa2="二";}
if(x2 == 3){aa2="三";}
if(x2 == 4){aa2="四";}
if(x2 == 5){aa2="五";}
if(x2 == 6){aa2="六";}
if(x2 == 7){aa2="七";}
if(x2 == 8){aa2="八";}
if(x2 == 9){aa2="九";}
cout << aa2 <<"百";
//十位数
if(x1 == 0){aa1="零";}
if(x1 == 1){aa1="一";}
if(x1 == 2){aa1="二";}
if(x1 == 3){aa1="三";}
if(x1 == 4){aa1="四";}
if(x1 == 5){aa1="五";}
if(x1 == 6){aa1="六";}
if(x1 == 7){aa1="七";}
if(x1 == 8){aa1="八";}
if(x1 == 9){aa1="九";}
cout << aa1 <<"十";
//个位数
if(x0 == 0){aa0="零";}
if(x0 == 1){aa0="一";}
if(x0 == 2){aa0="二";}
if(x0 == 3){aa0="三";}
if(x0 == 4){aa0="四";}
if(x0 == 5){aa0="五";}
if(x0 == 6){aa0="六";}
if(x0 == 7){aa0="七";}
if(x0 == 8){aa0="八";}
if(x0 == 9){aa0="九";}
cout << aa0 <<endl;
return 0;
}
作者:
林枫
时间:
2009-11-4 00:31
不错不错
欢迎光临 新微赢技术网 (http://bbs.weiying.cn/)
Powered by Discuz! X3.2