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; }