news 2026/8/13 11:47:03

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/13 11:46:15

提供网站建设费用:揭秘行业底价与隐形消费陷阱的全攻略

在这个流量为王的时代,很多老板和业务负责人都在纠结同一件事:我想做一个网站,到底得花多少钱?这个问题就像问“买房多少钱”一样,答案可能是从几千元到几百万不等,全看你怎么选、在哪选、找谁做。今天,我不打算给你罗列那些冷冰冰的报价单表格,而是想以一名在业内摸爬…

作者头像 李华
网站建设 2026/8/13 11:44:49

零基础小白必看网站建设学习步骤:从入门到精通的实战指南,揭秘那些老手不会告诉你的隐藏技巧与避坑指南

很多人一听到“做网站”这三个字,脑子里蹦出来的画面往往是满屏的代码、密密麻麻的服务器IP地址,或者是坐在昏暗的机房里对着闪烁的绿色终端疯狂敲击键盘。这种刻板印象把绝大多数普通人拒之门外,让人觉得网站建设是一项高不可攀的技术活,仿佛只有计算机专业的天才才能碰触…

作者头像 李华
网站建设 2026/8/13 11:42:40

2026接口测试平台选型指南:破解性能瓶颈与架构演进

1. 项目概述&#xff1a;为什么我们需要重新审视接口测试平台 最近和几个在不同公司负责质量保障的朋友聊天&#xff0c;大家不约而同地提到了同一个痛点&#xff1a;手头的接口测试平台越来越“慢”了。这种“慢”不是单指某个请求响应慢&#xff0c;而是一种系统性的、全方位…

作者头像 李华
网站建设 2026/8/13 11:42:06

SECS/GEM和GEM300应该包含哪些通用模块?

对于基于SEMI 标准开发 SECS/GEM驱动组件的研发人员来说&#xff0c; 必须要先详细阅读E30部分的内容&#xff0c;才能从标准的角度了解应用层的模块。 具体的SECS/GEM 和GEM300 应该要包含哪些必要功能模块&#xff0c;请参考 SECS/GEM 设备驱动产品 —— DLink介绍 GEM300…

作者头像 李华
网站建设 2026/8/13 11:40:10

Java实现ReAct智能体:AgentScope框架下的工程实践与架构设计

1. 项目概述&#xff1a;当Java遇上AgentScope的ReAct智能体最近在智能体开发领域&#xff0c;AgentScope这个框架的热度是越来越高了。作为一个专注于多智能体应用开发的平台&#xff0c;它让构建复杂的协作式AI应用变得前所未有的简单。而今天我想和大家深入聊聊的&#xff0…

作者头像 李华