思路:不仅超出int还超出Longlong,直接用string类型定义n,for循环来遍历每一位字符然后转换成数字进行累加,再用to_string把数字和转换成字符串,再用for循环把数字和的每一位定位到pinyin字符串数组上输出
#include <iostream>
using namespace std;
int main() {
string pinyin[] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
string n;
cin >> n;
int sum = 0;
for (char c : n) {
sum += c - '0'; // 将字符转换为数字并累加
}
string sum_str = to_string(sum); // 将和转换为字符串
for (int i = 0; i < sum_str.length(); i++) {
int digit = sum_str[i] - '0'; // 获取和的每一位数字
cout << pinyin[digit];
if (i != sum_str.length() - 1) {
cout << " ";
}
}
return 0;
}
注意:
用int来定义n
int n;
cin>>n;
cout<<n;
输入:1234567890987654321123456789
输出:2147483647
long long
输出:9223372036854775807
超出long long范围
将字符转换为数字并累加
int sum = 0;
for (char c : n) {
sum += c - '0'; // 将字符转换为数字并累加
}