| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3700 人关注过本帖
标题:[求助]编一个把数字转化成汉字念法的程序
只看楼主 加入收藏
zwn2006
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-6-16
收藏
 问题点数:0 回复次数:24 
[求助]编一个把数字转化成汉字念法的程序
编写程序使能够输入一个数字,把他的汉字念法显示在屏幕上.
例如:您输入14785,
输出结果为:一万四千七百八十五.
到万就可以了,多了更好,有能力的高手谢谢帮哈忙!!!
油箱:ghostzwn2008@126.com
搜索更多相关主题的帖子: 汉字 数字 
2006-09-22 17:15
C_Student
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-9-13
收藏
得分:0 
我只是学几天的新手,用目前想到的换算...(数学跟本没什么概念,以下慢慢实验出来的公式)
换算好之后,如果变成汉字就好办了,但是我不会,没学到足够语法用,不好意思...
(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;
}

[此贴子已经被作者于2006-9-23 16:10:33编辑过]

2006-09-23 15:54
C_Student
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-9-13
收藏
得分:0 
//哈哈,研发出来了,试好久耶,成功!!

#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;
}

}

[此贴子已经被作者于2006-9-23 17:42:50编辑过]

2006-09-23 17:36
C_Student
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-9-13
收藏
得分:0 
// 不用多说,上面的加强版,有关于”零”的显示时机修正.
// 自己研究出来的,因为刚学不久,可能方法有点怪怪的,数目太大可能就不行了.
// 目前是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;
}
}

[此贴子已经被作者于2006-9-25 20:34:06编辑过]

2006-09-23 22:32
zwn2006
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-6-16
收藏
得分:0 
谢谢拉!!
2006-09-24 19:44
zwn2006
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-6-16
收藏
得分:0 
不过运行是好象有个错误!!
2006-09-24 19:46
C_Student
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-9-13
收藏
得分:0 
测试过可以用的,看有没有少符号没复制到.或者说系统语系不一样
中文的繁体和简体是不同互通的,有乱码执行就会出错.
这是Dev-C++写的,其它的没试过…

很多代码我用Dev-C++也是错误,我不知道这论坛都用什么语言…
这程序不是很好,因为中文的”零”出现时机很难判断,
位数太大的话,以我几天的功力可写不出精确的程序.

不好意思…只能这样子^^”

补充:
若用其它编译器可能要改…
{iostream> 加个h之类的..<iostream.h>
或是改int main() 变成void main()
大概是这类错误…因为我下过这里的东西,
都要改这些才能在Dev C++用,有的不会改就无法用= =
还有要用C++编译不能用C,这二个是不一样的.

[此贴子已经被作者于2006-9-24 21:40:54编辑过]

2006-09-24 21:18
zwn2006
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-6-16
收藏
得分:0 
我们用的是VC++,我在试试吧!!
2006-09-25 09:10
C_Student
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-9-13
收藏
得分:0 
//这是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;
}


[此贴子已经被作者于2006-9-25 15:38:58编辑过]

2006-09-25 15:26
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 
不错不错

2006-09-25 18:54
快速回复:[求助]编一个把数字转化成汉字念法的程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011829 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved