
开始尝试直接输入这样一个大数,来进行数值拆分
#include<iostream>
using namespace std;
int main(){
long long n;
cin >> n;
//1234567890....
long long a = n;
int b = 0, sum = 0;
while (a > 10) {
b = a % 10;
sum += b;
a = a / 10;
}
cout << sum << endl;
}
发现输入求和数值不对,调试发现

输入数超过long long表示的最大数值
只能尝试使用字符串的方式
将输入的数看成是一个字符串再进行拆分
#include<iostream>
using namespace std;
int main(){
string n;
cin >> n;
int sum = 0;
for (int i = 0; i < n.length(); i++)
{
char c = n[i];
//判断c是不是一个字符
if (isdigit(c)) {
sum += c - '0';
}
}
cout << sum << endl;
}

最后通过:
#include<iostream>
using namespace std;
string getnumber(int x);
int main(){
string n;
cin >> n;
int sum = 0;
for (int i = 0; i < n.length(); i++)
{
char c = n[i];
//判断c是不是一个字符
if (isdigit(c)) {
sum += c - '0';
}
}
int a = sum,b=0,cnt=0,c=0;
while (a > 10) {
b = a % 10;
a = a / 10;
cnt++;
}
cnt++;
string s[10];
for (int i = cnt - 1; i >= 0; i--) {
c = sum % 10;
sum = sum / 10;
s[i] = getnumber(c);
}
for (int i = 0; i < cnt; i++) {
cout << s[i];
if (i != cnt - 1) cout << " ";
}
cout << endl;
}
string getnumber(int x) {
switch (x) {
case 0:
return "ling";
break;
case 1:
return "yi";
break;
case 2:
return "er";
break;
case 3:
return "san";
break;
case 4:
return "si";
break;
case 5:
return "wu";
break;
case 6:
return "liu";
break;
case 7:
return "qi";
break;
case 8:
return "ba";
break;
case 9:
return "jiu";
break;
default :
break;
}
}

503

被折叠的 条评论
为什么被折叠?



