HDU 2005 第几天?解题报告

题目http://acm.hdu.edu.cn/showproblem.php?pid=2005

这道题也是第一遍没有AC,错误代码如下,问题出在哪里了呢?

#include<stdio.h>
int main()
{
    int y,m,d,i,sum=0;
    int a[11];
    a[0]=31;
    a[2]=31;
    a[3]=30;
    a[4]=31;
    a[5]=30;
    a[6]=31;
    a[7]=31;
    a[8]=30;
    a[9]=31;
    a[10]=30;
    a[11]=31;
    while(scanf("%d/%d/%d",&y,&m,&d)!=EOF)
    {
        
        if(y%4==0)
        a[1]=29;
        else
        a[1]=28;
        for(i=0;i<m-1;i++)
        {
            sum=sum+a[i];
        }
        sum=sum+d;
        printf("%d\n",sum);
     }


    return 0;

}

问题1:sum=0这一句一定要写在while里面,memset清空数组时候也是一样的,否则程序只能正确计算一遍。

问题2:闰年定义都没弄清楚。。。公元纪年的年数可以被四整除,即为闰年;被100整除而不能被400整除为平年;被100整除也可被400整除的为闰年。如2

000年是闰年,而1900年不是

正确的代码应该是

#include<stdio.h>
int main()
{
    int y,m,d,i,sum;
    int a[11];
    a[0]=31;
    a[2]=31;
    a[3]=30;
    a[4]=31;
    a[5]=30;
    a[6]=31;
    a[7]=31;
    a[8]=30;
    a[9]=31;
    a[10]=30;
    a[11]=31;
    while(scanf("%d/%d/%d",&y,&m,&d)!=EOF)
    {
        sum=0;
        if(y%4==0)
        {
            if(y%100==0&&y%400!=0)
            a[1]=28;
            else
            a[1]=29;
            
        }
        else
        a[1]=28;
        for(i=0;i<m-1;i++)
        {
            sum=sum+a[i];
        }
        sum=sum+d;
        printf("%d\n",sum);



    }


    return 0;

}
原文地址:https://www.cnblogs.com/whatthefy/p/2983212.html