HM082 按姓名改完全部字段

HM082 按姓名改完全部字段

HM082 按姓名改完全部字段

来源: 第 82 集 通讯录管理系统-修改联系人

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

修改也是按用户指定的姓名来做。封装 modifyPerson,用地址传递接收通讯录指针(形参写成 AddressBook *book)。先读入要修改的姓名,调用已经封装好的 isExist

  • 返回 \(-1\):本子里没有这个人,输出 查无此人,**不要**再读后面的新字段,也不许改任何人。
  • 返回值不是 \(-1\):此人存在。不知道用户究竟想改姓名、性别、年龄、电话还是住址,因此把五项全部重新录入,写到 personArray[ret] 上:
    1. 读入新姓名(允许改名)。
    2. 读入性别。只允许 \(1\)(男)或 \(2\)(女)。用循环反复读,直到合法才写入并离开循环;每读到非法值输出一行 输入有误请重新输入。不要假设性别不可能被改。
    3. 读入年龄、电话、住址。年龄不做正负校验,读到就写入。
    4. 全部写完后输出 修改成功

改名之后,旧姓名再查找应是 查无此人,新姓名应能查到改过的五项。可以用显示全部(选项 \(2\))核对整本通讯录。

输入格式

第一行一个整数 \(n\)(\(0 \le n \le 100\))。

接下来 \(n\) 行,每行:姓名、性别、年龄、电话、住址,均不含空白。\(1 \le sex \le 2\),年龄为整数。

下一行一个整数 \(q\)(\(1 \le q \le 100\))。

接下来 \(q\) 个操作,每个操作以一个整数 \(kind\) 开头:

  • 2:显示当前全部联系人。
  • 4\ name:按姓名查找。
  • 5\ name:按姓名修改。仅当此人存在时,后面紧跟:新姓名、若干个整数(最后一个属于 \(\{1,2\}\) 的作为性别,前面的非法值都要提示重输)、年龄、电话、住址。

姓名长度不超过 \(20\),电话和住址长度不超过 \(30\)。

输出格式

按操作即时输出:

  • 查找或显示某人:一行五个字段,相邻之间一个制表符,性别为
  • 显示时若 mSize 为 \(0\):一行 当前记录为空
  • 找不到:一行 查无此人
  • 修改成功:一行 修改成功;性别非法时先输出相应行数的 输入有误请重新输入

行末换行。

样例

输入 #1

1
张三 1 18 13690000000 海淀
5
5 张小三
5 张三
张三丰
3
2
30 13681111111 朝阳
2
4 张三
4 张三丰

输出 #1

查无此人
输入有误请重新输入
修改成功
张三丰 女   30  13681111111 朝阳
查无此人
张三丰 女   30  13681111111 朝阳

输入 #2

0
1
5 张三

输出 #2

查无此人

说明

样例 1 先改不存在的张小三,直接拒绝;再改张三,性别先输入了 \(3\),提示有误,直到 \(2\) 才接受,并改名为张三丰。此后显示与查找都应看到新信息,旧名张三不再存在。找不到时后面不会出现新字段。modifyPerson 必须走指针,否则主函数里的通讯录不会变。

信息

ID
1081
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者