使用scanf()标准化输入非常方便。
#include <iostream>
#include <cstdio>
using namespace std;
const int N =18;
const int Yeardays =365;
//闰年计算函数
int leapyear(int year){
if((year%4==0&&year&100!=0)||year%400==0)
return 1;
return 0;
}
int main(){
int t,byear,bmonth,bday,sum;
cin>>t;
while(t--){
scanf("%d-%d-%d",&byear,&bmonth,&bday);
if(bmonth==2&&bday==29&&leapyear(byear+N)!=1)
printf("-1\n");
else{
sum=0;
sum=YEARDAYS*N;
for(int i=1;i<N;i++)
sum+=leapyear(byear+i);//出生年和18岁年以外的闰年天数
if(bmonth>2)
sum+=leapyear(byear+N);//18当年的闰年天数
else if(bmonth<2||bday!=29)
sum+=leapyear(byear);//出生当年的闰年天数
cout<<sum<<end;
}
}
}