HM082 按姓名改完全部字段
HM082 按姓名改完全部字段
来源: 第 82 集 通讯录管理系统-修改联系人
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
修改也是按用户指定的姓名来做。封装 modifyPerson,用地址传递接收通讯录指针(形参写成 AddressBook *book)。先读入要修改的姓名,调用已经封装好的 isExist:
- 返回 \(-1\):本子里没有这个人,输出
查无此人,**不要**再读后面的新字段,也不许改任何人。 - 返回值不是 \(-1\):此人存在。不知道用户究竟想改姓名、性别、年龄、电话还是住址,因此把五项全部重新录入,写到
personArray[ret]上:- 读入新姓名(允许改名)。
- 读入性别。只允许 \(1\)(男)或 \(2\)(女)。用循环反复读,直到合法才写入并离开循环;每读到非法值输出一行
输入有误请重新输入。不要假设性别不可能被改。 - 读入年龄、电话、住址。年龄不做正负校验,读到就写入。
- 全部写完后输出
修改成功。
改名之后,旧姓名再查找应是 查无此人,新姓名应能查到改过的五项。可以用显示全部(选项 \(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
- 通过率
- ?
- 上传者