主题:各位大神们。新人求助啊。弄不出来
输入
输入一个数T,后面T行每行有一个日期,格式是YYYY MM DD。如某人的生日是1991 03 03。
输出
每组测试数据输出一行,每行一个数,表示从出生到17岁生日所经过的天数。如果没有17岁的生日,输出-1。
样例输入
1
1991 03 03
样例输出
6210
我怎么打都是错的。哭
我的代码
#include <stdio.h>
void main()
{
int judge(int x);
int n,y,m,d,i,j;
int sum,temp;
int a[12]={31,0,31,30,31,30,31,31,30,31,30,31};
scanf("%d",&n);
while(n--)
{
sum=6206; //17*365
temp=0;
scanf("%d %d %d",&y,&m,&d);
if(judge(y)&&!judge(y+17)&&m==2&&d==29)
printf("-1\n");
else
{
if(judge(y)&&m<=2)
sum+=1;
for(i=y+1;i<y+17;i++)
{
if(judge(i)) sum+=1;
}
if(judge(i)&&m>2)
sum+=1;
printf("%d\n",sum);
}
}
}
int judge(int x)
{
if((x%4==0)&&(x%100!=0)||(x%4000==0))
{
return 1;
}
else
{
return 0;
}
}
输入一个数T,后面T行每行有一个日期,格式是YYYY MM DD。如某人的生日是1991 03 03。
输出
每组测试数据输出一行,每行一个数,表示从出生到17岁生日所经过的天数。如果没有17岁的生日,输出-1。
样例输入
1
1991 03 03
样例输出
6210
我怎么打都是错的。哭
我的代码
#include <stdio.h>
void main()
{
int judge(int x);
int n,y,m,d,i,j;
int sum,temp;
int a[12]={31,0,31,30,31,30,31,31,30,31,30,31};
scanf("%d",&n);
while(n--)
{
sum=6206; //17*365
temp=0;
scanf("%d %d %d",&y,&m,&d);
if(judge(y)&&!judge(y+17)&&m==2&&d==29)
printf("-1\n");
else
{
if(judge(y)&&m<=2)
sum+=1;
for(i=y+1;i<y+17;i++)
{
if(judge(i)) sum+=1;
}
if(judge(i)&&m>2)
sum+=1;
printf("%d\n",sum);
}
}
}
int judge(int x)
{
if((x%4==0)&&(x%100!=0)||(x%4000==0))
{
return 1;
}
else
{
return 0;
}
}