PTA基础编程题目集 7-34通讯录的录入与显示(C++语言实现) 📅 2026/8/13 11:47:06 摘要本文是PTA编程题通讯录的录入与显示的题解涵盖题目描述、输入输出格式及C语言实现展示结构体数组存储与索引查询的核心方法。题目描述通讯录中的一条记录包含下述基本信息朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。本题要求编写程序录入N条记录并且根据要求显示任意某条记录。输入格式输入在第一行给出正整数N≤10随后N行每行按照格式姓名 生日 性别 固话 手机给出一条记录。其中姓名是不超过10个字符、不包含空格的非空字符串生日按yyyy/mm/dd的格式给出年月日性别用M表示男、F表示女固话和手机均为不超过15位的连续数字前面有可能出现。在通讯录记录输入完成后最后一行给出正整数K并且随后给出K个整数表示要查询的记录编号从0到N−1顺序编号。数字间以空格分隔。输出格式对每一条要查询的记录编号在一行中按照姓名 固话 手机 性别 生日的格式输出该记录。若要查询的记录不存在则输出Not Found。输入样例3 Chris 1984/03/10 F 86181779452 13707010007 LaoLao 1967/11/30 F 057187951100 8618618623333 QiaoLin 1980/01/01 M 84172333 10086 2 1 7输出样例LaoLao 057187951100 8618618623333 F 1967/11/30 Not Found解题思路核心问题分析本题需要实现通讯录的录入与查询功能。核心要点有三一是用合适的数据结构存储多条记录包含姓名、生日、性别、固话、手机5个字段二是按正确顺序输出字段注意输出顺序与输入顺序不同输入是姓名-生日-性别-固话-手机输出是姓名-固话-手机-性别-生日三是处理无效查询编号输出Not Found。算法原理说明采用结构体数组索引查询的方案数据结构设计定义Contact结构体包含5个字段分别存储一条记录的各项信息。录入阶段读取N后循环N次按输入顺序读取5个字段存入结构体数组对应下标的元素。查询阶段读取K后循环K次读取查询编号idx。若idx在[0, N)范围内则按输出顺序读取并打印对应结构体的字段否则输出Not Found。时间复杂度O(NK)录入和查询均为线性扫描空间复杂度O(N)存储N条通讯录记录具体计算步骤读取正整数N通讯录记录条数循环i从0到N-1依次读取姓名、生日、性别、固话、手机存入contacts[i]的对应字段读取正整数K查询次数随后读取K个查询编号循环处理K个查询读取查询编号idx判断idx 0 且 idx N是按姓名 固话 手机 性别 生日顺序输出否输出Not Found代码流程说明头文件引入引入iostream和cstring头文件定义结构体typedef定义Contact结构体包含name、birthday、gender、fixedPhone、mobilePhone五个字段读取N输入通讯录记录条数n定义结构体数组Contact contacts[10]最多容纳10条记录录入N条记录循环n次每次用cin按顺序读取5个字段存入contacts[i]读取K输入查询次数k处理K次查询循环k次读取查询编号idx判断idx是否在有效范围[0, n)内有效则按指定顺序输出5个字段注意固话手机在前性别生日在后无效输出Not Found程序结束return 0代码流程图是否是是否否开始定义Contact结构体类型读取记录条数n定义结构体数组存通讯录i从0开始i小于n?读取五项信息存入当前记录i加1读取查询次数ki从0开始i小于k?读取查询编号idx编号在有效范围内?按指定顺序输出五项信息输出Not Foundi加1结束解题流程图是否是否开始读取记录条数N录入N条通讯录记录读取查询次数K和K个编号对每个查询编号处理编号在有效范围内?按姓名固话手机性别生日格式输出输出Not Found还有未处理查询?完成代码部分实现#includeiostream#includecstringusingnamespacestd;typedefstruct{charname[11];charbirthday[11];chargender;charfixedPhone[16];charmobilePhone[16];}Contact;intmain(){intn;cinn;Contact contacts[10];for(inti0;in;i){cincontacts[i].namecontacts[i].birthdaycontacts[i].gendercontacts[i].fixedPhonecontacts[i].mobilePhone;}intk;cink;for(inti0;ik;i){intidx;cinidx;if(idx0idxn){coutcontacts[idx].name contacts[idx].fixedPhone contacts[idx].mobilePhone contacts[idx].gender contacts[idx].birthdayendl;}else{coutNot Foundendl;}}return0;}