题目
思路
- 录入数据
(1)使用一个结构people来保存每个人的信息,成员包括名字和出生日期
(2)初始创建一个max和一个min,表示年级最大的人和年级最小的人,其中max的初始birth应该比任何有效数据的birth都大,min的初始birth应该比任何有效数据的birth都小,使得任何有效数据都可以覆盖初始值
(3)名字直接录入name[]数组,出生日期先以字符串的形式录入temp[]数组,再用trans函数转换为数字再赋值给birth
(4)每录入一个有效数据,计数的count++,且和max,min的birth比较做对应的处理 - 打印
最后直接打印出count和max以及min的name即可,但需要注意,有可能出现没有一个有效数据的情况,所以需要先校验一下count的个数,当count>0时打印对应的名字;
#include<stdio.h>
typedef struct
{
char name[6];
int birth;
}people;
int trans(char temp[])
{
int res = 0;
for (int i = 0; temp[i] != '\0'; i++)
if (temp[i] != '/')
res=res*10+(temp[i]-'0');
return res;
}
int main(void)
{
int n, count = 0;
people min = { "max",0 }, max = { "min",21000000 }, p;
char temp[11];
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%s%s", p.name, temp);
p.birth = trans(temp);
if (p.birth >= 18140906 && p.birth <= 20140906)
{
count++;
if (p.birth < max.birth)
max = p;
if (p.birth > min.birth)
min = p;
}
}
printf("%d",count);
if (count > 0)
{
printf(" %s", max.name);
printf(" %s", min.name);
}
return 0;
}