「Mac玩转仓颉内测版16」PTA刷题篇7 - L1-007 念数字
本篇将继续讲解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 的读法按拼音读法输出。
解题思路
- 处理负数:如果 N 是负数,首先输出“fu”,然后处理其绝对值部分。
- 数字转换:将整数的每一位转换为对应的拼音数字,并按顺序输出,以空格分隔。
- 特殊情况:需要处理输入为 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
}
代码详解
-
数字映射:通过 digitToPinyin 数组,将每个数字的字符转换为对应的拼音读法。ch - num0[0] 是将字符 ch 转换为整数的方式,通过减去字符 '0' 的 ASCII 值,得到了对应的数字。
-
处理负数:如果输入的数字是负数,首先在结果字符串中添加“fu”前缀,之后将数字转为其绝对值进行处理。
-
特殊情况处理:如果输入为 0,函数直接返回“ling”,不需要进行进一步处理。
-
结果拼接:在将数字转为拼音后,每个拼音间使用空格分隔。拼接时,首次拼接不加空格,从第二次开始使用 " " 作为分隔符。
示例执行
示例 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 來源:坚果派 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- 0回答
- 1粉丝
- 0关注
- 「Mac玩转仓颉内测版10」PTA刷题篇1 - L1-001 Hello World
- 「Mac玩转仓颉内测版11」PTA刷题篇2 - L1-002 打印沙漏
- 「Mac玩转仓颉内测版15」PTA刷题篇6 - L1-006 连续因子
- 「Mac玩转仓颉内测版14」PTA刷题篇5 - L1-005 考试座位号
- 「Mac玩转仓颉内测版18」PTA刷题篇9 - L1-009 N个数求和
- 「Mac玩转仓颉内测版19」PTA刷题篇10 - L1-010 比较大小
- 「Mac玩转仓颉内测版20」PTA刷题篇11 - L1-011 A-B
- 「Mac玩转仓颉内测版12」PTA刷题篇3 - L1-003 个位数统计
- 「Mac玩转仓颉内测版13」PTA刷题篇4 - L1-004 计算摄氏温度
- 「Mac玩转仓颉内测版17」PTA刷题篇8 - L1-008 求整数段和
- 「Mac玩转仓颉内测版7」入门篇7 - Cangjie控制结构(下)
- 「Mac玩转仓颉内测版1」入门篇1 - Cangjie环境的搭建
- 「Mac玩转仓颉内测版21」基础篇1 - 仓颉程序的基本组成
- 「Mac玩转仓颉内测版9」入门篇9 - 综合案例篇
- 「Mac玩转仓颉内测版4」入门篇4 - Cangjie变量命名规则