结构
第4题
【描述】
通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。本题要求编写程序,录入N条记录,并且根据要求显示任意某条记录。
【输入】
输入在第1行给出正整数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
#include<stdio.h>
struct list{
char name[11];
int year,month,day;
char SEX;
char telphone[17],mobile[17];
};
int main()
{
int n,k,i=0,t;
struct list l[10];
scanf("%d",&n);
t=n;
while(n--){
scanf("%s %d/%d/%d %c %s %s",&l[i].name,&l[i].year,&l[i].month,&l[i].day,&l[i].SEX,&l[i].telphone,&l[i].mobile);
i++;
}
scanf("%d",&k);
i=0;
while(k--){
scanf("%d",&n);
if(n>t-1)
printf("Not Found\n");
else
printf("%s %s %s %c %d/%d/%d\n",l[n].name,l[n].telphone,l[n].mobile,l[n].SEX,l[n].year,l[n].month,l[n].day);
}
return 0;
}
上面是分次输出
下面是最后一起输出。但是相似度都是0.98
#include<stdio.h>
struct list{
char name[11];
int year,month,day;
char SEX;
char telphone[17],mobile[17];
};
int main()
{
int n,k,i=0,t,num[100];
struct list l[10];
scanf("%d",&n);
t=n;
while(n--){
scanf("%s %d/%d/%d %c %s %s",&l[i].name,&l[i].year,&l[i].month,&l[i].day,&l[i].SEX,&l[i].telphone,&l[i].mobile);
i++;
}
scanf("%d",&k);
i=0;
while(k--){
scanf("%d",&num[i]);
i++;
}
for(n=0;n<i;n++){
if(num[n]>t-1)
printf("Not Found\n");
else
printf("%s %s %s %c %d/%d/%d\n",l[num[n]].name,l[num[n]].telphone,l[num[n]].mobile,l[num[n]].SEX,l[num[n]].year,l[num[n]].month,l[num[n]].day);
}
return 0;
}
最后把生日变成字符串形式就成功了,但是不知道为什么
<pre name="code" class="plain">#include<stdio.h>
struct list{
char name[11];
char birth[20];
char SEX;
char telphone[17],mobile[17];
};
int main()
{
int n,k,i=0,t,num[10];
struct list l[10];
scanf("%d",&n);
t=n;
while(n--){
scanf("%s %s %c %s %s",&l[i].name,&l[i].birth,&l[i].SEX,&l[i].telphone,&l[i].mobile);
i++;
}
scanf("%d", &k);
i=0;
while(k--){
scanf("%d",&num[i]);
i++;
}
for(n=0;n<i;n++){
if(num[n]>t-1||num[n]<0)
printf("Not Found\n");
else
printf("%s %s %s %c %s\n",l[num[n]].name,l[num[n]].telphone,l[num[n]].mobile,l[num[n]].SEX,l[num[n]].birth);
}
return 0;
}
最后在MOOC讨论区中发现了,原来是我的生日如果用%d表示,那么01月就会变成1月,不符合题目要求!!