PAT-B-1002-写出这个数

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:

每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。

输出格式:

在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

1
1234567890987654321123456789

输出样例:

1
yi san wu

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>

int main(){
//输入处理
char num[101];

int sum = 0;
int i;
if(scanf("%s",num)!=EOF) {
for(i=0;num[i]!='\0';i++) {
//将数字字符转为数字有两种方法:
//第一种:用数字字符出减去'0'即'1'-'0'(它俩是用ASCII码相减的即49-48=1)
//第二种:用数字字符出减去48(48是‘0’的ASCII码)即'1'-48=1
sum += (num[i]-'0');
}
}
char out[101];

//将计算的和赋给字符串
sprintf(out, "%d" , sum);

for(i=0;out[i]!='\0';i++) {
switch(out[i]){
case '0':
printf("ling");
break;
case '1':
printf("yi");
break;
case '2':
printf("er");
break;
case '3':
printf("san");
break;
case '4':
printf("si");
break;
case '5':
printf("wu");
break;
case '6':
printf("liu");
break;
case '7':
printf("qi");
break;
case '8':
printf("ba");
break;
case '9':
printf("jiu");
break;
}
if(out[i+1]!='\0'){
printf(" ");
}
}

return 0;
}

----\(˙<>˙)/----赞赏一下吧~