回 帖 发 新 帖 刷新版面

主题:各位大神们。新人求助啊。弄不出来

输入

输入一个数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;
    }
}

回复列表 (共1个回复)

沙发

[font=宋体]
#include <stdio.h>
void main()
{
    int judge(int x);
    int n,y,m,d,i;
    int sum,temp;
    scanf("%d",&n);
    while(n--)
    {
        sum=[color=FF0000]6205[/color];   //17*365
        scanf("%d %d %d",&y,&m,&d);
       [color=FF0000] if(m==2 && d==29)
            if(judge(y)) printf("No 17th Birthday.\n");
            else printf("No this man(woman).\n");
        else[/color]        {
            if(judge(y) && m<=2) sum++;
            for(i=y+1;i<y+17;i++) if(judge(i)) sum++;
            if(judge(i) && m>2) sum++;
            printf("%d\n",sum);
        }
    }
}
int judge(int x)
{
    return ((x%4==0) && (x%100!=0) || (x%[color=FF0000]400[/color]==0));
}

[/font]

我来回复

您尚未登录,请登录后再回复。点此登录或注册