数据范围为0~10^100,直接用string
先用for循环直接算出各位数字的总和,然后遍历总和数字的每一位,对总和数字取个位并且每取一次将其删除,重新取个位,判断每一位的数字将其转化为英文形式
该题整体较为简单,主要考察对length()的使用以string的长度来遍历字符串
AC代码如下
#include<iostream>
using namespace std;
string s;
int arr[110];
int sum = 0;
int cnt = 0;
int main()
{
cin >> s;
for (int i = 0; i < s.length(); i++)
{
if (s[i] - '0' >= 0 && s[i] - '9' <= 0)
{
sum += (s[i] - '0');
}
}
while (sum)
{
arr[cnt++] = sum % 10;
sum /= 10;
}
for (int i = cnt - 1; i >= 0; i--)
{
if (arr[i] == 0) cout << "zero" << " ";
else if (arr[i] == 1) cout << "one" << " ";
else if (arr[i] == 2) cout << "two" << " ";
else if (arr[i] == 3) cout << "three" << " ";
else if (arr[i] == 4) cout << "four" << " ";
else if (arr[i] == 5) cout << "five" << " ";
else if (arr[i] == 6) cout << "six" << " ";
else if (arr[i] == 7) cout << "seven" << " ";
else if (arr[i] == 8) cout << "eight" << " ";
else if (arr[i] == 9) cout << "nine" << " ";
}
return 0;
}