PTA-通讯录的录入与显示

通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。
本题要求编写程序,录入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

分析:

  • 定义一个名为t的结构体,包含五个字段:name(名字)、birth(生日)、sex(性别)、number1number2
  • 定义一个名为n的整数变量,从用户处读取其值,表示将要输入的结构体的数量。
  • 根据n的值创建一个t类型的数组p
  • 使用一个for循环,循环n次,依次读取每个结构体的信息,并存储到数组p中。
  • 定义一个名为k的整数变量,从用户处读取其值,表示将要使用的索引的数量。
  • 创建一个大小为k的整数数组mark,用于存储用户提供的索引。
  • 使用一个for循环,循环k次,读取每个索引,并存储到数组mark中。
  • 使用另一个for循环,循环k次,根据数组mark中的每个索引,输出对应索引的结构体信息。如果索引无效(小于0或大于等于结构体的数量),则输出"Not Found"。
  • 程序返回0,表示正常结束。

代码:

#include<stdio.h>

int main()
{
    typedef struct o
    {
      char name[100];
        char birth[300];
        
        char sex[200];
        char number1[150];
        char number2[150];

    }t;
int n;
    scanf("%d",&n);
    t p[n];
    for(int i=0;i<n;i++)
    {
        scanf("%s",&p[i].name);
        scanf("%s",&p[i].birth);
        scanf("%s",&p[i].sex);
        scanf("%s",&p[i].number1);
        scanf("%s",&p[i].number2);

    }
    int k;
    scanf("%d",&k);
    int mark[k];
    for(int i=0;i<k;i++)
    {
        scanf("%d",&mark[i]);
    }
   for(int i=0;i<k;i++)
   {
       if(mark[i]>=0&&mark[i]<n)
       {
           printf("%s %s %s %s %s\n",p[mark[i]].name,p[mark[i]].number1,p[mark[i]].number2,p[mark[i]].sex,p[mark[i]].birth);
       }
       else
       {
           printf("Not Found\n");
           
       }
   }
    return 0;
}

总结:

这段代码首先读取结构体的数量和每个结构体的信息,然后读取要查询的索引,最后根据这些索引输出对应结构体的信息。如果索引无效,则输出"Not Found"

 

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值