拼写正确
1. 题目地址
https://www.acwing.com/problem/content/1479/
2. 题目解析
假设给定数字 N = 12345 。那么我们应该将该数字的各位数字相加,即:1 + 2 + 3 + 4 + 5 = 15。
得到相加的数字之后,再用英语来输出每位数字。即:one five
3. 题解
我们可以通过如下思路来解答本题:
1. 输入N。
2. 计算N的每位数字之和。
3. 将得到的数字的每一位用英语单词输出即可。
这道题整体来看比较简单,但是有一些坑:
1. 这道题的数字范围很大,如果我们用数值类型来存,肯定会爆掉。因此,我们需要用字符串类型来存储。
2. 当我们输出结果时,一定要注意空格的问题,因为PAT对空格的把控及其严格。
4. 代码
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
string number;
cin >> number;
//用数组来存储英文单词
char words[10][10] = {
"zero","one","two","three","four",
"five","six","seven","eight","nine"
};
int sum = 0;
//得到每位数字的总和
for( int i = 0; i < number.size(); i ++ ){
sum += (number[i] - '0');
}
//再将总和转换为字符串
string str = to_string(sum);
//将字符串的每一位用英文表示
//为了避免多余空格,我们先将第一位输出,之后的其余位再以空格+数字的形式进行输出
cout << words[str[0] - '0'];
for( int i = 1; i < str.size(); i ++ ){
cout << " " << words[str[i] - '0'];
}
return 0;
}
作者:gao79138
链接:https://www.acwing.com/
来源:本博客中的截图、代码模板及题目地址均来自于Acwing。其余内容均为作者原创。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。