vlambda博客
学习文章列表

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;

  }

}