C语言阿拉伯数字转大写汉字,阿拉伯数字转大写汉字

这是我在大二学习C++时写的一段代码,功能是实现将金额的阿拉伯数字转换为大写汉字。在银行,会计等方面用处很大,希望对大家有所帮助。以下是在Visual C++ 6.0下调试通过的源代码:

#include

#include

void main()

{

int num=0,j=0; /*变量j用来存储各个位上的数值*/

int x=0; /*负数标记*/

int k=0,l=0,m=0,n=0; /*分别记录千万位至万位是否输出过零*/

int a=0,b=0,c=0,d=0; /*分别记录千位至个位是否输出过零*/

int temp1=0,temp2=0,temp4=0,temp5=0; /*用来解决高四位和低四位重复输出的零*/

char c1[]={"壹"},c2[]={"贰"},c3[]={"叁"},c4[]={"肆"},c5[]={"伍"},c6[]={"陆"},c7[]={"柒"},c8[]={"捌"},c9[]={"玖"},c0[]={"零"};

char *string[]={c0,c1,c2,c3,c4,c5,c6,c7,c8,c9};

cout<

cout<

cout<

cout<

next:

cin>>num;

if(num<0)

{

num=-num; /*将负数取反,变为正数处理,以x=1作为负数标记*/

x=1;

}

if(num>99999999) {cout<

if(x){cout<

if(num==0)cout<

if(num<=99999999&&num>=10000000)

{

j=(int)num/10000000;

cout<

num=num-j*10000000;

k++;

}

if(num<=9999999&&num>=1000000)

{

j=(int)num/1000000;

cout<

num=num-j*1000000;

l++;

}

if(k==1&&l==0) {cout<

if(num<=999999&&num>=100000)

{

j=(int)num/100000;

cout<

num=num-j*100000;

m++;

}

if((k==1&&l==1&&m==0)||(l==1&&m==0)) {cout<

if(num<=99999&&num>=10000)

{

j=(int)num/10000;

cout<

num=num-j*10000;

n++;

}

{

{

if(k==1&&l==0&&m==0&&n==0)cout<

if(l==1&&m==0&&n==0)cout<

}

if(k==1||l==1||m==1||n==1){cout<

}

if(n==0&&(k==1||l==1||m==1)){cout<

if(num<=9999&&num>=1000)

{

j=(int)(num/1000);

cout<

num=num-j*1000;

a++;

}

if(k==1||l==1||m==1||n==1){cout<

if((a==1)&&(temp1==1)){cout<

if(temp4==4&&temp1==1){cout<

if(num<=999&&num>=100)

{

j=(int)(num/100);

cout<

num=num-j*100;

b++;

}

if(a==1&&b==0) {cout<

if(num<=99&&num>=10)

{

j=(int)(num/10);

cout<

num=num-j*10;

c++;

}

if(b==1&&c==0) {cout<

if(num<=9&&num>0)

{

j=num;

d++;

if(j!=0) {cout<

}

/*下面四个IF语句作用是对结果中多出的"零"进行处理*/

if(temp5==5&&d==0)cout<

if(temp1==1&&a==0&&b==0&&c==0&&d==0){cout<

if(a==1&&b==0&&c==0&&d==0&&temp2==2) {cout<

if(b==1&&c==0&&d==0&&temp2==2) {cout<

cout<

k=0,l=0,m=0,n=0; /*以下三行用来将记录状态的变量重置,以进行便下一次循环*/

a=0,b=0,c=0,d=0;

temp1=0,temp2=0,temp4=0,temp5=0;

//goto next;

}

默认情况下我注释掉了最后一行的GOTO语句,这样程序每次只执行一遍,这时没有任何问题。

但如果取消掉了注释程序就会执行无限次,但这时会有一个问题:就是若输入的数不是整数,如5.0 或是 abc 程序会进入死循环,屏幕上一直输出“零圆整”。为什么会进入这个死循环,我一直也没能搞明白,希望如果有谁能知道为什么会进入这个死循环,还请告诉我一声,感激不尽。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值