PAT-B] 1002. 写出这个数 [字符串处理]

链接:1002. 写出这个数(20)

题意

输入一个整数 n 。
计算 n 的每一位的相加的和 sum
以拼音的方式顺位输出

分析

首先,这个 n 范围很大.. 小于 $10^{100}$
也就是说这个 n 最大可以取到 $10^{100} - 1$ 。
所以先定位到字符串处理问题。(虽然可以不用字符串,用轻松的方法来写。详见代码)

如果用字符来存储某一位数字的话,在计算 sum 的时候就要注意 - ‘0’。不减的话可以要犯大错误的。

算完 sum 之后 输出每一位数字的拼音的时候。要注意两点 :

  1. 拼音要高位先输出,之间有空格最后没空格
  2. 拼音要学好 (・-・*)

代码

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
#include <cstdio>
#include <stack>
using namespace std;
char* py[10]={ "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" };
int main()
{
char n;
int sum = 0;
while( ~scanf( "%c", &n ) && n != '\n' ){
sum += n - '0';
}
stack< int > stk;
while( sum ){
stk.push( sum % 10 );
sum /= 10;
}
printf( "%s", py[ stk.top() ] );
stk.pop();
while( stk.size() ){
printf( " %s", py[ stk.top() ] );
stk.pop();
}
puts( "" );
return 0;
}

小结

用上stack写起来比较简单..

//