C语言-阿拉伯数字金额转化成大写字母
陆陆续续作了一个礼拜,4月13日晚上终于有空静下心来,把这串代码码出来了,加油!!
#include<stdio.h>
int indentify(char undigit[],int lenth);
int indentifyunit(int lenth);
int lookzero(char digit[],int lenther);
int subzero(char digitl[],int lenthere);
main()
{
char digit[20];
char undigit[20];
int i=0;
int n,m,j;
char c;
while((c=getchar())!=EOF)
digit[i++]=c;
for(n=i-1,m=0;n>=0;n--,m++)
undigit[n]=digit[m];
for(j=i;j>0;j--)
{
indentify(undigit,j);
indentifyunit(j);
if(lookzero(undigit,j)<0)
{
if(j<9&&j>5)
printf("万");
if(j>9)
printf("亿");
break;}
else
j=subzero(undigit,j);
}
printf("元整");
return 0;
}
int indentify(char s[],int lim)
{
switch(s[lim-1])
{
case '0':printf("零");break;
case '1':printf("壹");break;
case '2':printf("贰");break;
case '3':printf("叁");break;
case '4':printf("肆");break;
case '5':printf("伍");break;
case '6':printf("陆");break;
case '7':printf("柒");break;
case '8':printf("捌");break;
case '9':printf("玖");break;
default:printf("erro");break;
}
return 0;
}
int indentifyunit(int limt)
{
if((limt+1)%2==0&&(limt+1)%4!=0)
printf("");
else
if(limt%2==0&&limt%4!=0)
printf("拾");
else
if((limt+1)%4==0)
printf("佰");
else
if(limt%4==0)
printf("仟");
if(limt==5)
printf("万");
if(limt==9)
printf("亿");
return 0;
}
int lookzero(char r[],int f)
{
f=f-2;
while(r[f]=='0')
f=f-1;
return f;
}
int subzero(char d[],int l)
{
int p;
p=l-2;
for(l=l-2;d[l]==d[l-1]&&d[l]=='0'&&lookzero(d,l)>0;l--)
{ if(l==5)
printf("万");
if(l==9)
printf("亿");
}
if(p==l&&d[l]!='0')
return l=l+2;
else
{printf("零");
return l=l+1;
}
}