//PAT1028V2
#include <stdio.h>
int main(){
int n,count=0,i; //n is the number of input
scanf("%d",&n);
struct birth{
char name[6];
int year;
int month;
int day;
}a,max,min;
max.year=2014,max.month=9,max.day=7;
min.year=1814,min.month=9,min.day=5;
for(i=0;i<n;i++){
scanf("%s %d/%d/%d",&a.name,&a.year,&a.month,&a.day);
count++;
if((a.year>2014)||(a.year==2014&&a.month>9)||(a.year==2014&&a.month==9&&a.day>6)||(a.year<1814)||(a.year==1814&&a.month<9)||(a.year==1814&&a.month==9&&a.day<6)){
count--;
continue;
}
if((a.year<max.year)||(a.year==max.year&&a.month<max.month)||(a.year==max.year&&a.month==max.month&&a.day<max.day)){
max=a;
}
if((a.year>min.year)||(a.year==max.year&&a.month>max.month)||(a.year==min.year&&a.month==min.month&&a.day>min.day)){
min=a;
}
}
printf("%d",count);
if(count!=0){
printf(" %s %s",max.name,min.name);
}
return 0;
}

1028 人口普查最后一个测试点通过不了
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- Italink 2018-10-28 04:25关注
看注释.
#include <stdio.h> int main() { int n, count = 0, i; //n is the number of input scanf("%d", &n); struct birth { char name[6]; int year; int month; int day; }a, max, min; max.year = 2014, max.month = 10, max.day = 7; min.year = 1814, min.month = 8, min.day = 1; for (i = 0; i<n; i++) { scanf("%s %d/%d/%d", &a.name, &a.year, &a.month, &a.day); count++; if ((a.year>2014) || (a.year == 2014 && a.month>9) || (a.year == 2014 && a.month == 9 && a.day>6) || (a.year<1814) || (a.year == 1814 && a.month<9) || (a.year == 1814 && a.month == 9 && a.day<6)) { count--; continue; } if ((a.year<max.year) || (a.year == max.year&&a.month<max.month) || (a.year == max.year&&a.month == max.month&&a.day<max.day)) { max = a; } //下方第二个逻辑判断把min错写成了max,写的时候没注意看吧 if ((a.year>min.year) || (a.year == min.year&&a.month>min.month) || (a.year == min.year&&a.month == min.month&&a.day>min.day)) { min = a; } } printf("%d", count); if (count != 0) { printf(" %s %s", max.name, min.name); } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报