当前位置: 首页 > news >正文

PTA基础编程题目集 7-34通讯录的录入与显示(C++语言实现)

摘要:本文是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。

算法原理说明

采用结构体数组+索引查询的方案:

  1. 数据结构设计:定义Contact结构体,包含5个字段分别存储一条记录的各项信息。
  2. 录入阶段:读取N后,循环N次按输入顺序读取5个字段存入结构体数组对应下标的元素。
  3. 查询阶段:读取K后,循环K次读取查询编号idx。若idx在[0, N)范围内,则按输出顺序读取并打印对应结构体的字段;否则输出"Not Found"。
  • 时间复杂度O(N+K):录入和查询均为线性扫描
  • 空间复杂度O(N):存储N条通讯录记录

具体计算步骤

  1. 读取正整数N(通讯录记录条数)
  2. 循环i从0到N-1:
    • 依次读取姓名、生日、性别、固话、手机,存入contacts[i]的对应字段
  3. 读取正整数K(查询次数),随后读取K个查询编号
  4. 循环处理K个查询:
    • 读取查询编号idx
    • 判断idx >= 0 且 idx < N?
      • 是:按"姓名 固话 手机 性别 生日"顺序输出
      • 否:输出"Not Found"

代码流程说明

  1. 头文件引入:引入iostream和cstring头文件
  2. 定义结构体:typedef定义Contact结构体,包含name、birthday、gender、fixedPhone、mobilePhone五个字段
  3. 读取N:输入通讯录记录条数n
  4. 定义结构体数组:Contact contacts[10],最多容纳10条记录
  5. 录入N条记录:循环n次,每次用cin按顺序读取5个字段存入contacts[i]
  6. 读取K:输入查询次数k
  7. 处理K次查询:循环k次:
    • 读取查询编号idx
    • 判断idx是否在有效范围[0, n)内
    • 有效则按指定顺序输出5个字段(注意固话手机在前,性别生日在后)
    • 无效输出"Not Found"
  8. 程序结束:return 0

代码流程图

开始

定义Contact结构体类型

读取记录条数n

定义结构体数组存通讯录

i从0开始

i小于n?

读取五项信息存入当前记录

i加1

读取查询次数k

i从0开始

i小于k?

读取查询编号idx

编号在有效范围内?

按指定顺序输出五项信息

输出Not Found

i加1

结束

解题流程图

开始

读取记录条数N

录入N条通讯录记录

读取查询次数K和K个编号

对每个查询编号处理

编号在有效范围内?

按姓名固话手机性别生日格式输出

输出Not Found

还有未处理查询?

完成

代码部分实现

#include<iostream>#include<cstring>usingnamespacestd;typedefstruct{charname[11];charbirthday[11];chargender;charfixedPhone[16];charmobilePhone[16];}Contact;intmain(){intn;cin>>n;Contact contacts[10];for(inti=0;i<n;i++){cin>>contacts[i].name>>contacts[i].birthday>>contacts[i].gender>>contacts[i].fixedPhone>>contacts[i].mobilePhone;}intk;cin>>k;for(inti=0;i<k;i++){intidx;cin>>idx;if(idx>=0&&idx<n){cout<<contacts[idx].name<<" "<<contacts[idx].fixedPhone<<" "<<contacts[idx].mobilePhone<<" "<<contacts[idx].gender<<" "<<contacts[idx].birthday<<endl;}else{cout<<"Not Found"<<endl;}}return0;}
http://www.cnnetsun.cn/news/3999366.html

相关文章:

  • 提供网站建设费用:揭秘行业底价与隐形消费陷阱的全攻略
  • 零基础小白必看网站建设学习步骤:从入门到精通的实战指南,揭秘那些老手不会告诉你的隐藏技巧与避坑指南
  • 免费开源视频下载插件 VideoDownloadHelper 上手全攻略:3 个实用技巧让你一学就会
  • 2026接口测试平台选型指南:破解性能瓶颈与架构演进
  • SECS/GEM和GEM300应该包含哪些通用模块?
  • Java实现ReAct智能体:AgentScope框架下的工程实践与架构设计
  • 5分钟搞定:DeepL Chrome扩展终极指南,告别外文阅读障碍
  • LLM推理GPU利用率仅10%?深度解析内存墙与自回归瓶颈及优化实战
  • SciPy 图结构:从稀疏矩阵到图算法实战
  • 大文件上传实战:从分片到直传,解决图片视频上传难题
  • 山西网站建设报价单揭秘:从入门到高端,揭秘真实成本与隐藏陷阱,帮你避坑省钱
  • AgentScope 2.0:4. Message Event —— 消息模型与事件流深度解析
  • 微信聊天记录导出终极指南:WeChatMsg让你珍藏的每一段对话都不再丢失
  • 深度解析:建设银行网站是什么以及它如何重塑现代金融服务体验
  • 用Python代码打造父亲节专属礼物:从动态爱心到交互游戏的创意实现
  • 实测Ollama本地部署LLM:从环境配置到客户端接入完整指南
  • SPT-AKI 存档编辑器使用手记:从一个坏档开始,我花了三个月把它变成日常工具
  • 快慢指针算法:高效检测回文链表的原理与实践
  • 2026年8月鱼池拔管排污总是排不净?这4个手法才是关键
  • 网站建立找美橙互联专业团队如何为企业数字化转型注入强大动力?
  • 终极网盘直链解析指南:如何用LinkSwift实现9大网盘的高速下载
  • 兰州网站建设多少钱?揭秘真实成本与避坑指南,帮你省下每一分钱
  • 微信聊天记录导出终极指南:免费永久保存每一段对话
  • python的运筹学工业场景模拟第十篇:钢板下料切割整数规划,满足零件需求,最小钢板消耗,输出各切割模式使用次数。
  • 企业数字化转型核心抓手:打造高效协同的内部网站 建设方案 及实施指南
  • 动态模糊系统改进灰狼算法(FGWO)原理与应用
  • 数学建模国赛C题实战:从解题框架到论文撰写的全流程指南
  • 基于FFmpeg的音视频剪辑与字幕合成实战:从节目片段到技术实现
  • 六盘水合肥电商网站建设指南:揭秘低成本打造高转化独立站的实战策略与避坑指南
  • 兰州网站建设推荐q479185700上墙 深耕西北数字化浪潮:那些真正懂企业的建站逻辑与避坑指南