1002 写出这个数 (20 分)
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu不知道是不是我理解错了,题目中已经说明
n 小于 10100,为啥还要给个测试用例为1234567890987654321123456789。不管三七二十一,直接用字符串处理。建立int→string的映射。输入输出处理,数字的入栈顺序为低位→高位,出栈顺序为高位→低位。
1 #include <bits/stdc++.h>
2 using namespace std;
3
4
5 int main()
6 {
7 string str;
8 stack<
int>
ans;
9 map<
int,
string>
a;
10 a[
0]=
"ling";
11 a[
1]=
"yi";
12 a[
2]=
"er";
13 a[
3]=
"san";
14 a[
4]=
"si";
15 a[
5]=
"wu";
16 a[
6]=
"liu";
17 a[
7]=
"qi";
18 a[
8]=
"ba";
19 a[
9]=
"jiu";
20 int sum=
0;
21 cin>>
str;
22 for(
int i=
0;i<str.length();i++
)
23 sum+=str[i]-
'0';
24 if(sum==
0)
//注意边界问题
25 ans.push(
0);
26 while(sum)
27 {
28 ans.push(sum%
10);
29 sum/=
10;
30 }
31 while(!
ans.empty())
32 {
33 cout<<
a[ans.top()];
34 ans.pop();
35 if(!
ans.empty())
36 cout<<
" ";
37 }
38 cout<<
endl;
39 return 0;
40 }
转载于:https://www.cnblogs.com/ManOK/p/10167456.html
相关资源:1002 写出这个数 (20分).c