本篇将继续讲解PTA平台上的题目 L1-005 考试座位号,通过考生准考证号与座位号的对应关系,掌握简单的数据查询与映射操作,进一步提升Cangjie编程语言的实际应用能力。
关键词
- PTA刷题
- 数据查询
- 映射操作
- 输入输出
- Cangjie语言
一、L1-005 考试座位号
题目描述:输入若干学生的准考证号与考试座位号,之后再输入若干需要查询的准考证号,输出对应的考试座位号。
-
输入格式:
- 首行给出一个正整数 N,表示考生人数。
- 接下来 N 行,每行包含一个准考证号(长度为15的字符串)和一个座位号(1到100之间的整数)。
- 最后输入一个正整数 M,表示需要查询的考生数。
- 接下来 M 行,每行包含一个准考证号,要求输出对应的座位号。
-
输出格式:对每个查询的准考证号,输出对应的座位号。
解题思路
- 使用字典(映射)存储数据:将准考证号与座位号的对应关系存储在字典(映射)中,方便后续查询。
- 输入数据并建立映射:根据考生人数 N,输入准考证号和座位号,建立准考证号到座位号的映射关系。
- 查询输出:根据 M 个查询的准考证号,输出相应的座位号。
代码实现
package cjcDemo
import std.console.*
import std.convert.*
import std.collection.*
class Student {
var examId: String // 准考证号
var testSeatId: Int64 // 试机座位号
var examSeatId: Int64 // 考试座位号
init(examId: String, testSeatId: Int64, examSeatId: Int64) {
this.examId = examId
this.testSeatId = testSeatId
this.examSeatId = examSeatId
}
}
// 封装录入学生数据的函数
func inputStudentData(studentCount: Int64): HashMap<Int64, Student> {
let studentsMap: HashMap<Int64, Student> = HashMap<Int64, Student>()
for (_ in 0..studentCount) {
let studentData: Array<String> = Console.stdIn.readln().getOrThrow().split(" ")
let parsedTestSeatId = Int64.parse(studentData[1]) // 解析出来的试机座位号
let student = Student(studentData[0], parsedTestSeatId, Int64.parse(studentData[2])) // 学生的准考证号和考试座位号
studentsMap.put(parsedTestSeatId, student)
}
return studentsMap
}
// 封装查询学生数据的函数
func queryStudentData(studentsMap: HashMap<Int64, Student>): Unit {
let queryIds: Array<String> = Console.stdIn.readln().getOrThrow().split(" ")
for (queryId in queryIds) {
let parsedQueryId = Int64.parse(queryId) // 查询的试机座位号
let student = studentsMap.get(parsedQueryId).getOrThrow()
println("${student.examId} ${student.examSeatId}")
}
}
// 主函数
main(): Int64 {
// 读取学生数量并录入数据
let studentCount: Int64 = Int64.parse(Console.stdIn.readln().getOrThrow())
let studentsMap = inputStudentData(studentCount)
// 读取需要查询的学生数量并进行查询
Int64.parse(Console.stdIn.readln().getOrThrow())
queryStudentData(studentsMap)
return 0
}
代码详解
- 映射操作:使用字典(映射)将准考证号与座位号对应起来,方便查询。
- 数据输入:根据输入的 N,逐行录入准考证号和座位号,并存储在映射中。
- 查询并输出:根据 M 个查询的准考证号,直接从映射中获取并输出对应的座位号。
示例执行
输入:
4
3310120150912233 2 4
3310120150912119 4 1
3310120150912126 1 3
3310120150912002 3 2
2
3 4
输出:
3310120150912002 2
3310120150912119 1
通过这道题目,进一步掌握了映射操作和查询机制,能够高效处理数据并进行输出。
小结
本篇通过实现 L1-005 考试座位号 题目,练习了数据查询与映射操作,能够高效应对类似的映射查询问题,进一步强化了编程实战能力。
下篇预告
下一篇将继续进行PTA刷题,讲解 L1-006 连续因子 的解题思路与实现,敬请期待 「Mac玩转仓颉内测版15」PTA刷题篇6 - L1-006 连续因子。
上一篇:「Mac玩转仓颉内测版13」PTA刷题篇4 - L1-004 计算摄氏温度
下一篇:「Mac玩转仓颉内测版15」PTA刷题篇6 - L1-006 连续因子
作者:SoraLuna
链接:https://www.nutpi.net/thread?topicId=159
來源:坚果派
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。