感觉没什么好说的。我是偷懒用String读入,然后转换计算。代码看上去比较麻烦。
附上AC代码:
#include <iostream>
#include <string>
#include <stack>
using namespace std;
void change(string s ,int & sum) {
for (int i = 0; i < s.size(); i++)
{
// cout << s[i] << endl;
switch (s[i])
{
case '1':sum = sum + 1; break;
case '2':sum = sum + 2; break;
case '3':sum = sum + 3; break;
case '4':sum = sum + 4; break;
case '5':sum = sum + 5; break;
case '6':sum = sum + 6; break;
case '7':sum = sum + 7; break;
case '8':sum = sum + 8; break;
case '9':sum = sum + 9; break;
case '0':sum = sum + 0; break;
default:
break;
}
}
}
stack <int> S;
void Print(int a) {
switch (a)
{
case 1: cout << "one"; break;
case 2: cout << "two"; break;
case 3: cout << "three"; break;
case 4: cout << "four"; break;
case 5: cout << "five"; break;
case 6: cout << "six"; break;
case 7: cout << "seven"; break;
case 8: cout << "eight"; break;
case 9: cout << "nine"; break;
case 0: cout << "zero"; break;
default:
break;
}
}
int main() {
int sum = 0;
string s;
cin >> s;
change(s,sum);
int temp = sum;
int N = 0;
int tempS;
while (temp / 10) {
temp = temp / 10;
N++;
}
temp = sum;
for (int i = 0; i < N + 1; i++) {
tempS = temp % 10;
temp = temp / 10;
S.push(tempS);
}
while (S.size())
{
if (S.size() == 1) {
tempS = S.top();
S.pop();
Print(tempS);
}
else
{
tempS = S.top();
S.pop();
Print(tempS);
cout << " ";
}
}
system("pause");
return 0;
}