lht071213 2026-03-17 20:00 采纳率: 0%
浏览 2

用仓颉语言设计函数输入月份值,并返回月份的天数,如果输入的月份值小于1或大于12,则通过option类型返回空值

用仓颉语言设计函数输入月份值,并返回月份的天数,如果输入的月份值小于1或大于12,则通过option类型返回空值
,有人会写嘛(一个完整的代码)

  • 写回答

1条回答 默认 最新

  • 檀越@新空间 2026-03-17 20:48
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    当然可以!下面是一个完整的仓颉语言(Cangjie)代码示例,用于设计一个函数:输入月份值,并返回该月份的天数。如果输入的月份值小于1或大于12,则通过 Option 类型 返回空值。


    ✅ 功能说明

    • 函数名称:getMonthDays
    • 输入参数:month: Int
    • 返回类型:Option<Int>
    • 逻辑:
      • 如果 month 在 [1, 12] 范围内,返回对应的天数。
      • 否则,返回 None(即 Option 的空值)。

    🧠 解决方案步骤:

    1. 定义一个函数 getMonthDays(month: Int): Option<Int>
    2. 使用 if 条件判断月份是否合法。
    3. 如果合法,根据月份返回对应的天数。
    4. 如果不合法,返回 None
    5. 可以添加测试用例验证函数行为。

    📜 完整代码如下:

    // 定义函数 getMonthDays,接收一个 Int 类型的 month 参数,返回 Option<Int>
    func getMonthDays(month: Int): Option<Int> {
        // 判断月份是否在有效范围内
        if month >= 1 && month <= 12 {
            // 根据月份返回对应的天数
            switch month {
                case 1:
                    return Some(31)
                case 2:
                    return Some(28) // 不考虑闰年
                case 3:
                    return Some(31)
                case 4:
                    return Some(30)
                case 5:
                    return Some(31)
                case 6:
                    return Some(30)
                case 7:
                    return Some(31)
                case 8:
                    return Some(31)
                case 9:
                    return Some(30)
                case 10:
                    return Some(31)
                case 11:
                    return Some(30)
                case 12:
                    return Some(31)
                default:
                    return None
            }
        } else {
            return None
        }
    }
    
    // 测试用例
    func main() {
        let result1 = getMonthDays(2)
        let result2 = getMonthDays(13)
        let result3 = getMonthDays(0)
    
        // 输出结果
        print("February has " + (result1.getOrElse(0)).toString() + " days.")
        print("Invalid month has " + (result2.getOrElse(0)).toString() + " days.")
        print("Invalid month has " + (result3.getOrElse(0)).toString() + " days.")
    }
    

    🔍 代码说明:

    • Some(value):表示有值,相当于 Option<T>.Some(value)
    • None:表示没有值,相当于 Option<T>.None
    • getOrElse(defaultValue):从 Option 中获取值,若为 None,则返回默认值

    📌 示例输出:

    假设运行上述 main() 函数,输出可能为:

    February has 28 days.
    Invalid month has 0 days.
    Invalid month has 0 days.
    

    ✅ 总结:

    • 函数功能清晰:输入月份,返回天数或 None
    • 使用 Option 类型:避免了空指针异常
    • 支持多种情况:包括合法月份和非法月份

    如果你需要扩展功能,例如处理闰年,也可以告诉我,我可以继续优化这个函数。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月17日