日常工作会用到阿拉伯字母金额转换成中文大写,故开始着手编写:运行范围 C /包含范围(0-999999999):

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

posted on 2020-04-14 21:29  溪下  阅读(89)  评论(0)    收藏  举报