C(需要用g++的编译器),过些日子用C指针改一下
#include <stdio.h>
struct Person{
char name[6];
int yy,mm,dd;
}max,min,left,right,temp;
bool LessEqu(Person a,Person b) //a小于b返回真
{
if(a.yy != b.yy)return a.yy<=b.yy;
else if(a.mm != b.mm)return a.mm<=b.mm;
else return a.dd<=b.dd;
}
bool MoreEqu(Person a,Person b) //a大于b返回真
{
if(a.yy != b.yy)return a.yy>=b.yy;
else if(a.mm != b.mm)return a.mm>=b.mm;
else return b.dd<=a.dd;
}
void init()
{
min.yy = left.yy = 1814;
max.yy = right.yy = 2014;
min.mm = max.mm = left.mm = right.mm = 9;
min.dd = max.dd = left.dd = right.dd = 6;
}
int main()
{
init();
int n,count=0;
scanf("%d",&n);
for(int i=0; i<n; i++)
{
scanf("%s %d/%d/%d",&temp.name,&temp.yy,&temp.mm,&temp.dd);
if(LessEqu(temp,right) && MoreEqu(temp,left))
{
count++;
if(LessEqu(temp,max))max = temp;
if(MoreEqu(temp,min))min = temp;
}
}
if(count==0)printf("0\n");
else printf("%d %s %s\n",count,max.name,min.name);
return 0;
}
C++
#include <iostream>
using namespace std;
int main()
{
int n,cnt=0;
cin>>n;
string name,birth,maxname,minname,maxbirth="1814/09/06",minbirth="2014/09/06";
for(int i=0;i<n;i++)
{
cin>>name>>birth;
if(birth>="1814/09/06" && birth<="2014/09/06")
{
cnt++;
if(birth>=maxbirth)
{
maxbirth = birth;
maxname = name;
}
if(birth<=minbirth)
{
minbirth = birth;
minname = name;
}
}
}
cout << cnt;
if(cnt != 0)cout << " " << minname << " " << maxname;
return 0;
}