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 }

 

posted on 2015-04-28 18:46  Asin_LZM  阅读(214)  评论(0编辑  收藏  举报