C 1028 人口普查(20 分)

2021-08-26 17:44:39 字數 1531 閱讀 4615

此題關鍵點有兩處:

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 歲的生日和未出生的生日都是不合理的,應該被過濾掉。輸入在第一行給...