记
#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”;以此类推,输出正确的值;