「Mac玩转仓颉内测版16」PTA刷题篇7 - L1-007 念数字

2024-11-16 18:57:06
15次阅读
0个评论
最后修改时间:2024-11-17 21:17:35

本篇将继续讲解PTA平台上的题目 L1-007 念数字,通过将数字转换为拼音读法,进一步提升Cangjie编程语言的字符串处理与逻辑判断能力。


关键词
  • PTA刷题
  • 数字转换
  • 拼音读法
  • 字符串处理
  • Cangjie语言

一、L1-007 念数字

题目描述:给定一个整数 N(可能为负数),需要将其转换为拼音数字读法并输出。负号需要读作“fu”,而数字部分每个数字的拼音对应为:

  • 0 - ling

  • 1 - yi

  • 2 - er

  • 3 - san

  • 4 - si

  • 5 - wu

  • 6 - liu

  • 7 - qi

  • 8 - ba

  • 9 - jiu

  • 输入格式:一个整数 N,可能为负数。

  • 输出格式:将整数 N 的读法按拼音读法输出。


解题思路
  1. 处理负数:如果 N 是负数,首先输出“fu”,然后处理其绝对值部分。
  2. 数字转换:将整数的每一位转换为对应的拼音数字,并按顺序输出,以空格分隔。
  3. 特殊情况:需要处理输入为 0 的情况,直接输出“ling”。

代码实现
package cjcDemo

import std.console.*
import std.convert.*

// 定义数字到拼音的映射
let digitToPinyin: Array<String> = ["ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"]

// 将数字转换为拼音读法的函数
func numberToPinyin(N: Int64): String {
    var result = ""
    
    // 处理负数
    var num = N
    if (N < 0) {
        result += "fu"
        num = -N
    }

    // 如果是 0,直接返回“ling”
    if (num == 0) {
        return "ling"
    }

    // 将每一位数字转换为拼音
    let numStr = num.toString()
    let num0 = '0'
    for (ch in numStr) {
        if (result.isEmpty()) {
            result += digitToPinyin[Int64(ch - num0[0])]
        } else {
            result += " " + digitToPinyin[Int64(ch - num0[0])]
        }      
    }
    
    return result
}

main(): Int64 {
    // 输入整数 N
    let N = Int64.parse(Console.stdIn.readln().getOrThrow())

    // 输出数字的拼音读法
    println(numberToPinyin(N))

    return 0
}

代码详解
  1. 数字映射:通过 digitToPinyin 数组,将每个数字的字符转换为对应的拼音读法。ch - num0[0] 是将字符 ch 转换为整数的方式,通过减去字符 '0' 的 ASCII 值,得到了对应的数字。

  2. 处理负数:如果输入的数字是负数,首先在结果字符串中添加“fu”前缀,之后将数字转为其绝对值进行处理。

  3. 特殊情况处理:如果输入为 0,函数直接返回“ling”,不需要进行进一步处理。

  4. 结果拼接:在将数字转为拼音后,每个拼音间使用空格分隔。拼接时,首次拼接不加空格,从第二次开始使用 " " 作为分隔符。


示例执行

示例 1
输入:

123

输出:

yi er san

示例 2
输入:

-45

输出:

fu si wu

示例 3
输入:

0

输出:

ling

示例 4
输入:

-600

输出:

fu liu ling ling

小结

本篇通过实现 PTA 题目 L1-007 念数字,练习了数字到拼音的映射转换以及负数处理逻辑。通过处理不同输入情况,提升了Cangjie语言在字符串操作中的实际应用能力。


下篇预告

下一篇将继续进行PTA刷题,讲解 L1-008 求整数段和 的解题思路与实现,敬请期待 「Mac上学习仓颉17」PTA刷题篇8 - L1-008 求整数段和


上一篇:「Mac上学习仓颉15」PTA刷题篇6 - L1-006 连续因子

下一篇:「Mac上学习仓颉17」PTA刷题篇8 - L1-008 求整数段和


作者:SoraLuna 链接:https://www.nutpi.net 來源:坚果派 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


收藏00

登录 后评论。没有帐号? 注册 一个。