思路:不仅超出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'; // 将字符转换为数字并累加
}