此题关键点有两处:
1 有一种情况 没有最大最小年龄的人,所以只输出0
2 判断的时候 年份越大 是越年轻 判断的时候应该注意(当时自己写写反了,思维定式)
if((temp.yyif((temp.yy>min.yy)||((temp.yy==min.yy)&&(temp.mm>min.mm))||((temp.yy==min.yy)&&(temp.mm==min.mm)&&(temp.dd>min.dd))) min=temp;
方法1
#include
using namespace std;int main()
{ int n,cnt&#61;0;scanf("%d",&n);struct birth{char name[6];int y;int m;int d;}a,max,min;max.y&#61;2014;max.m&#61;9;max.d&#61;7;min.y&#61;1814;max.m&#61;9;max.d&#61;5; for(int i &#61; 0;i2014||(a.y&#61;&#61;2014&&a.m>9)||(a.y&#61;&#61;2014&&a.m&#61;&#61;9&&a.d>6)||a.y<1814||(a.y&#61;&#61;1814&&a.m<9)||(a.y&#61;&#61;1814&&a.m&#61;&#61;9&&a.d<6)){cnt--;continue;}if(a.ymin.y||(a.y&#61;&#61;min.y&&a.m>min.m)||(a.y&#61;&#61;min.y&&a.m&#61;&#61;min.m&&a.d>min.d)){min&#61;a;}}printf("%d",cnt);if(cnt!&#61;0){printf(" %s %s",max.name,min.name);}return 0;
}
方法2 &#xff1a;自写&#xff0c;思想都差不多
#include
using namespace std;int main()
{struct stu{char name[6];int yy;int mm;int dd;
};int n;int k&#61;0,cnt&#61;0;cin>>n;stu temp,max,min;for(int i&#61;0;i2014)||((temp.yy&#61;&#61;2014)&&(temp.mm>9))||((temp.yy&#61;&#61;2014)&&(temp.mm&#61;&#61;9)&&(temp.dd>6))||(temp.yy<1814) ||((temp.yy&#61;&#61;1814)&&(temp.mm<9))||((temp.yy&#61;&#61;1814)&&(temp.mm&#61;&#61;9)&&(temp.dd<6))) continue;else{min&#61;temp;max&#61;temp;k&#61;i&#43;1;cnt &#43;&#43;;break;}}for(int i&#61;k;i2014)||((temp.yy&#61;&#61;2014)&&(temp.mm>9))||((temp.yy&#61;&#61;2014)&&(temp.mm&#61;&#61;9)&&(temp.dd>6))||(temp.yy<1814) ||((temp.yy&#61;&#61;1814)&&(temp.mm<9))||((temp.yy&#61;&#61;1814)&&(temp.mm&#61;&#61;9)&&(temp.dd<6))) continue;else{cnt &#43;&#43;;if((temp.yymin.yy)||((temp.yy&#61;&#61;min.yy)&&(temp.mm>min.mm))||((temp.yy&#61;&#61;min.yy)&&(temp.mm&#61;&#61;min.mm)&&(temp.dd>min.dd))) min&#61;temp;}}cout <}