PAT甲级 1005 Spell It Right (20 分)

题目链接:戳这里

题意:
输入一个数x,设该数每位之和为y。把y上面的每位数字用英语输出。

解题思路:
模拟。

代码如下:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
const int maxn = 1e2 + 10;
const int maxe = 3e4+10;
const int inf = 0x3f3f3f3f;
typedef long long ll;
char st[maxn];
string toSt(int x) {
    if(x == 0) return "zero";
    if(x == 1) return "one";
    if(x == 2) return "two";
    if(x == 3) return "three";
    if(x == 4) return "four";
    if(x == 5) return "five";
    if(x == 6) return "six";
    if(x == 7) return "seven";
    if(x == 8) return "eight";
    if(x == 9) return "nine";

}
void dfs(int x) {
    if(x > 0) {
        dfs(x/10);
        cout<<toSt(x%10)<<" ";
    }
}
int main() {
    scanf("%s", st);
    int len = strlen(st);
    int sum = 0;
    
    for(int i = 0; i < len; ++i) {
        sum += st[i] - '0';
    }

    if(sum == 0) cout<<toSt(sum);
    else {
        dfs(sum/10);
        cout<<toSt(sum%10);
    }
    return 0;
}

你可能感兴趣的:(PAT甲级)