HM081 按姓名查找一人
HM081 按姓名查找一人
来源: 第 81 集 通讯录管理系统-查找联系人
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
通讯录已经能添加和显示全部联系人。现在要按姓名查看**指定的一个人**。查找和显示不是同一件事:显示会把本子里所有人的信息都打出来;查找必须先指定姓名,只输出那一个人。两个人都在本子里时,查李四就只能出现李四,不能把张三一并带出来。
先封装 isExist:用地址传递接收通讯录指针,再传入要比对的姓名。在 \(0\) 到 mSize-1 之间遍历,姓名相同就返回该人在数组中的下标;全部找完都没有则返回 \(-1\)。\(-1\) 专门表示「不存在」,找到时下标一定不是负数。
再封装 findPerson,同样地址传递。函数里读入要查找的姓名,调用 isExist 得到结果 ret:
- 若
ret != -1,说明此人存在,按下标取出全部五项并显示:姓名、性别、年龄、电话、住址写在同一行,字段之间用水平制表符\t分隔,最后一项后换行。性别不要输出 \(1\) 或 \(2\),用三目运算符sex == 1 ? "男" : "女"(表达式要加括号)。 - 否则输出一行
查无此人。
空通讯录里任何人都不存在,也应走「查无此人」。两种情况都要测到:本子里有这个人,以及本子里没有这个人(包括写错名字、查已经不在的人)。
输入格式
第一行一个整数 \(n\)(\(0 \le n \le 100\)),表示当前人数。
接下来 \(n\) 行,每行:姓名、性别、年龄、电话、住址,均不含空白。\(1 \le sex \le 2\),\(1 \le age \le 150\)。
下一行一个整数 \(q\)(\(1 \le q \le 100\))。
接下来 \(q\) 行,每行一个不含空白的姓名,表示一次查找。
姓名长度不超过 \(20\),电话和住址长度不超过 \(30\)。
输出格式
对每次查找输出一行:找到则按「姓名、性别、年龄、电话、住址」输出,相邻字段之间恰好一个制表符,性别为 男 或 女;找不到则输出 查无此人。行末换行。
样例
输入 #1
2
张三 1 18 13690000000 海淀
李四 2 20 13681111111 朝阳
4
张三
李四
张小三
王五
输出 #1
张三 男 18 13690000000 海淀
李四 女 20 13681111111 朝阳
查无此人
查无此人
输入 #2
0
1
张三
输出 #2
查无此人
说明
必须先用 isExist 得到下标或 \(-1\),再用下标去取字段,不要另写一套与检测无关的查找。样例 1 本子里有张三、李四,指定谁就只显示谁;张小三、王五都不在,输出 查无此人。样例 2 当前记录为空,任何人都会查无此人。
信息
- ID
- 1080
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者