链接:1002. 写出这个数(20)
题意
输入一个整数 n 。
计算 n 的每一位的相加的和 sum
以拼音的方式顺位输出
分析
首先,这个 n 范围很大.. 小于 $10^{100}$ 。
也就是说这个 n 最大可以取到 $10^{100} - 1$ 。
所以先定位到字符串处理问题。(虽然可以不用字符串,用轻松的方法来写。详见代码)
如果用字符来存储某一位数字的话,在计算 sum 的时候就要注意 - ‘0’。不减的话可以要犯大错误的。
算完 sum 之后 输出每一位数字的拼音的时候。要注意两点 :
- 拼音要高位先输出,之间有空格最后没空格
- 拼音要学好 (・-・*)
代码
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写起来比较简单..
//