You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CS入门:如何实现1-35数字转英文拼写的C++代码?

完整实现代码
#include<iostream>
#include<string>

using std::cout; using std::cin; using std::endl;

int main() {

    cout << "Input a number 1-35 for the days within Japril: ";
    int number;
    cin >> number;

    // 拦截非法输入,避免后续逻辑出错
    if (number < 1 || number > 35) {
        cout << "Invalid input! Please enter a number between 1 and 35." << endl;
        return 1;
    }

    const int single = number %10;
    const int ten = number /10;

    // 0-9的英文映射,索引对应数字,0位留空适配1-9的情况
    const std::string ones[] = {"", "one", "two", "three", "four", "five", 
                                "six", "seven", "eight", "nine"};
    // 10-19的特殊英文,索引0对应10,依次到索引9对应19
    const std::string teens[] = {"ten", "eleven", "twelve", "thirteen", "fourteen", 
                                 "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
    // 20、30的十位英文,索引2对应20,3对应30
    const std::string tens[] = {"", "", "twenty", "thirty"};

    std::string result;

    // 分三类情况处理数字
    if (ten == 0) {
        // 1-9:直接取个位对应的英文
        result = ones[single];
    } else if (ten == 1) {
        // 10-19:直接取teens数组里的对应值
        result = teens[single];
    } else {
        // 20-35:先拼接十位英文,个位非0时追加连字符和个位英文
        result = tens[ten];
        if (single != 0) {
            result += "-" + ones[single];
        }
    }

    cout << "The written form is: " << result << endl;

    return 0;
}

关键部分说明

1. 输入合法性检查

加这一步是为了防止用户输入1-35之外的数字,避免后续数组索引越界或者输出错误结果,这是写程序时的基本习惯。

2. 字符串数组的作用

用数组做数字到英文的直接映射,是你当前阶段最容易理解和实现的方式:

  • ones数组:索引和数字一一对应,比如ones[5]就是"five",0位留空是因为我们处理的数字从1开始,十位为0时直接用个位索引取值。
  • teens数组:因为10-19的英文没有规律,不能拆成十位+个位,所以单独把这些特殊值存起来,用个位数字做索引直接取。
  • tens数组:只存20、30的十位部分,索引和十位数字对应(比如十位是2,取tens[2]即"twenty")。

3. 分情况逻辑

把数字分成三类处理,完全对应你拆分的ten和single变量:

  • 十位为0:就是1-9的数字,直接取个位的英文。
  • 十位为1:就是10-19的数字,直接取特殊映射的英文。
  • 十位为2或3:先取十位的英文,个位不是0的话,加上连字符和个位英文(比如35变成"thirty-five")。

内容的提问来源于stack exchange,提问作者Vamp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 13:06:12