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