该题一共分为两步:
- 计算各位数字之和;
- 用汉语拼音写出和的每一位数字。
具体代码如下:
#include<iostream>
#include<string>
using namespace std;
int main(){
string n; //将输入的正整数n看作是字符串类型,方便访问并进行求和计算。
cin >> n;
int sum = 0;
for(int i = 0; i < n.length(); i++){
sum = sum+n[i]-'0'; //求和运算,这里需要-'0'。
}
string num[10] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
string s1 = to_string(sum); //将所求的和转化为字符串类型,方便访问并转化为拼音。
for(int i = 0; i<s1.length(); i++){
if(i!=0){
cout <<" ";
}
cout << num[s1[i]-'0'];
}
return 0;
}
需要注意的是:将字符形式的数字转化为纯数字时,需要减去‘0‘,这是因为ASCII字符中的数字(‘123456’)想转换为纯数字(1,2,3,4…)就要减去48(ASCII单位),而‘0’的ASCII单位正好等于48。