记

#include<stdio.h>
#include<string.h>
int f( char m )
{
  int i;
  i = m - '0';
  return i;
}
int main()
{
  int i,j;
  int len,sum;
  char c[5];
  int  b[100];
  char a[100];
  //int f( char m );
  while(~scanf("%s",&a))
  {
    j=0;
    sum=0;
    len=strlen(a);
    for(i=0;i<len;i++)
        sum+=f(a[i]);
    while(sum!=0)
    {
      b[j]=sum%10;
      j++;
      sum=sum/10;
    }
    for(i=j-1;i>=0;i--)
    {
      if(i!=0)
      {
        switch(b[i])
          {
        case 0 : strcpy(c,"ling");   break;
        case 1 : strcpy(c,"yi");     break;
        case 2 : strcpy(c,"er");     break;
        case 3 : strcpy(c,"san");    break;
          case 4 : strcpy(c,"si");     break;
        case 5 : strcpy(c,"wu");     break;
        case 6 : strcpy(c,"liu");    break;
        case 7 : strcpy(c,"qi");     break;
        case 8 : strcpy(c,"ba");     break;
        case 9 : strcpy(c,"jiu");    break;
          }
          printf("%s ",c);
      }
          
      else
      {
        switch(b[i])
          {
        case 0 : strcpy(c,"ling");   break;
        case 1 : strcpy(c,"yi");     break;
        case 2 : strcpy(c,"er");     break;
        case 3 : strcpy(c,"san");    break;
          case 4 : strcpy(c,"si");     break;
        case 5 : strcpy(c,"wu");     break;
        case 6 : strcpy(c,"liu");    break;
        case 7 : strcpy(c,"qi");     break;
        case 8 : strcpy(c,"ba");     break;
        case 9 : strcpy(c,"jiu");    break;
          }
          printf("%s\n",c);
      }
          
    }
  }
  return 0;
}

由于其题目要求过长的长度,所以把这串数字看成字符型,并利用a=’a’-’1’+1;算出每个字符对应的数字并相加;然后再用一个循环算出其总值的每位数字,并给一个整形数组。定义一个二维数组a[0]=”yi”;以此类推,输出正确的值;