Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
106567 | 张永良 | 18岁生日 | C++ | Accepted | 0 MS | 200 KB | 1365 | 2025-01-16 13:34:38 |
#include<stdio.h> int main() { int count;//用于存储数据有几个出生日期 int number[200];//用于存储每个出生日期到18岁的天数 scanf("%d",&count); for(int j=0;j<count;j++) { int year=0,month=0,day=0,allDay=0; scanf("%d-%d-%d",&year,&month,&day);//按照格式接收数据 //如果是闰年的2月29日出生,那么必定没有18岁生日,天数设置为-1 if((year%400==0||(year%4==0&&year%100!=0))&&(month==2)&&(day==29)) { number[j]=-1; continue;//下面的代码就不执行了,进行下一次循环 } //分2月28前后,2月28日之前不管下一年是不是闰年,到下一年同一天的天数只跟这一年有关 //如果在2月28日之后,还要判断下一年是不是闰年,从而改变加的天数 if((month==2&&day<=28)||month==1) //2月28日之前 { for(int i=year;i<year+18;i++) { if(i%400==0||(i%4==0&&i%100!=0))//闰年天数加 1 allDay+=366; else allDay+=365; } } if(month>2) //2月之后 { for(int i=year+1;i<=year+18;i++) { if(i%400==0||(i%4==0&&i%100!=0)) allDay+=366; else allDay+=365; } } number[j]=allDay;//将总天数赋值给number存放 } for(int i=0;i<count;i++)//一起输出 printf("%d\n",number[i]); return 0; }