此題關鍵點有兩處:
1 有一種情況 沒有最大最小年齡的人,所以只輸出0
2 判斷的時候 年份越大 是越年輕 判斷的時候應該注意(當時自己寫寫反了,思維定式)
if((temp.yymin.yy)||((temp.yy==min.yy)&&(temp.mm>min.mm))||((temp.yy==min.yy)&&(temp.mm==min.mm)&&(temp.dd>min.dd))) min=temp;
方法1
#includeusing namespace std;
int main()
a,max,min;
max.y=2014;max.m=9;max.d=7;
min.y=1814;max.m=9;max.d=5;
for(int i = 0;i2014||(a.y==2014&&a.m>9)||(a.y==2014&&a.m==9&&a.d>6)||a.y<1814||(a.y==1814&&a.m<9)||(a.y==1814&&a.m==9&&a.d<6))
if(a.ymin.y||(a.y==min.y&&a.m>min.m)||(a.y==min.y&&a.m==min.m&&a.d>min.d))
}printf("%d",cnt);
if(cnt!=0)
return 0;
}
方法2 :自寫,思想都差不多
#includeusing namespace std;
int main()
; int n;
int k=0,cnt=0;
cin>>n;
stu temp,max,min;
for(int i=0;i2014)||((temp.yy==2014)&&(temp.mm>9))||((temp.yy==2014)&&(temp.mm==9)&&(temp.dd>6))||(temp.yy<1814) ||((temp.yy==1814)&&(temp.mm<9))||((temp.yy==1814)&&(temp.mm==9)&&(temp.dd<6))) continue;
else
} for(int i=k;i2014)||((temp.yy==2014)&&(temp.mm>9))||((temp.yy==2014)&&(temp.mm==9)&&(temp.dd>6))||(temp.yy<1814) ||((temp.yy==1814)&&(temp.mm<9))||((temp.yy==1814)&&(temp.mm==9)&&(temp.dd<6))) continue;
else
} cout << cnt;
if (cnt != 0)
cout << " " << max.name << " " << min.name;
return 0;
}
1028 人口普查(20 分)
某城鎮進行人口普查,得到了全體居民的生日。現請你寫個程式,找出鎮上最年長和最年輕的人。這裡確保每個輸入的日期都是合法的,但不一定是合理的 假設已知鎮上沒有超過 200 歲的老人,而今天是 2014 年 9 月 6 日,所以超過 200 歲的生日和未出生的生日都是不合理的,應該被過濾掉。輸入在第一行給...
1028 人口普查(20 分)
1028 人口普查 20 分 某城鎮進行人口普查,得到了全體居民的生日。現請你寫個程式,找出鎮上最年長和最年輕的人。這裡確保每個輸入的日期都是合法的,但不一定是合理的 假設已知鎮上沒有超過 200 歲的老人,而今天是 2014 年 9 月 6 日,所以超過 200 歲的生日和未出生的生日都是不合理的...
1028人口普查(20分)
某城鎮進行人口普查,得到了全體居民的生日。現請你寫個程式,找出鎮上最年長和最年輕的人。這裡確保每個輸入的日期都是合法的,但不一定是合理的 假設已知鎮上沒有超過 200 歲的老人,而今天是 2014 年 9 月 6 日,所以超過 200 歲的生日和未出生的生日都是不合理的,應該被過濾掉。輸入在第一行給...