1. 题目
2. 分析
题意:给出一串数字字符,要你把每个数字累加,最后得到的总和用对应的英语数字输出来。
3. 解题过程
- 题意十分简单,考察代码能力,关键在于把字符和数字之间的转换搞懂,这题就很简单了。
- 上次在某篇文章有提过字符与数字的转换神器:sstream头文件下的stringstream数据流创建方式,不了解的可以再温故一下。
- 请看代码:
#include<string>
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
int sum = 0;
string a;
cin >> a;
for(int i = 0; i < a.length(); i++)
{
string b = a.substr(i, 1);
stringstream ss;
int temp;
ss << b;
ss >> temp;
sum += temp;
}
char A[11][10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
int B[100], cnt = 0;
for(cnt = 0; sum != 0; cnt++)
{
B[cnt] = sum % 10;
sum /= 10;
}
printf("%s", A[B[cnt-1]]);
for(int i = cnt-2; i >= 0; i--)
{
printf(" %s", A[B[i]]);
}
return 0;
}
小结
- 最后要我们从左往右输出结果,但我们习惯从右往左得到每个数字,于是在输出的时候倒过来输出即可。
你的点赞是对我最大的支持,谢谢。