PAT (Basic Level) Practise (中文)- 1002. 写出这个数 (20)
http://www.patest.cn/contests/pat-b-practise/1002
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 char str[110]; 6 gets(str); 7 8 int number=0; 9 int iStr=0; 10 while(str[iStr]) 11 { 12 number+=str[iStr]-'0'; 13 iStr++; 14 } 15 16 if(!number) 17 { 18 printf("ling"); 19 return 0; 20 } 21 22 iStr=number; 23 int num=0; 24 while(number) 25 { 26 num++; 27 number/=10; 28 } 29 number=iStr; 30 char pinyin[10][6]={{"4ling"},{"2yi"},{"2er"},{"3san"},{"2si"},{"2wu"},{"3liu"},{"2qi"},{"2ba"},{"3jiu"}}; 31 int k=0; 32 iStr=0; 33 while(num) 34 { 35 if(iStr) 36 printf(" "); 37 38 num--; 39 k=number/((int)floor(pow(10,num)+0.5)); 40 number%=((int)floor(pow(10,num)+0.5)); 41 iStr=pinyin[k][0]-'0'; 42 for(int i=1;i<=iStr;i++) 43 { 44 printf("%c",pinyin[k][i]); 45 } 46 iStr++; 47 } 48 return 0; 49 }