闰年2月是29天,平年2月是28天,不是28,27
if ((y%4==0&&y%100!=0)||y%400==0)//是闰年应该加第二组数据
for(i=1,day=0;i<=m;i++)
day+=a[1][i-1]; //day+=a[0][i-1];改成day+=a[1][i-1];
else
for(i=1,day=0;i<=m;i++)
day+=a[0][i-1];//day+=a[1][i-1];改成day+=a[0][i-1];
你的代码过于复杂,我帮你修改一下,比较简洁,如下:
#include
int main()
{
int i;
int y,m,d,day;
int a[13]={31,28,31,30,31,30,31,31,30,31,30,31};
while(scanf("%d/%d/%d",&y,&m,&d)!=EOF)
{
if ((y%4==0&&y%100!=0)||y%400==0)a[1]++;//闰年2月为29天
for(i=0,day=0;i
day+=d;
printf ("%d\n",day);
}
return 0;
}
闰年2月是29天
楼上的程序有问题
其实只要改
int a[2][13]={{0,31,29,31,30,31,30,31,31,30,31,30,31},{0,31,28,31,30,31,30,31,31,30,31,30,31}};
我有点怀疑程序都不是你写的,你自己定义数组时候是定义下标从 1 开始;而调用的时候却是从0开始,当然会错了,而且你定义数组的时候那个27应该是29吧
而且累加天数的时候循环条件 是到当前月的前一个月
下面是我帮你改的
#include
int main()
{
int i;
int y,m,d,day;
int a[2][13]={{0,31,29,31,30,31,30,31,31,30,31,30,31},{0,31,28,31,30,31,30,31,31,30,31,30,31}};
while(scanf("%d/%d/%d",&y,&m,&d)!=EOF)
{if ((y%4==0&&y%100!=0)||y%400==0)
for(i=1,day=0;i
else
for(i=1,day=0;i
day+=d;
printf ("%d\n",day);
}
return 0;
}
while(scanf("%d/%d/%d",&y,&m,&d)!=EOF)
去掉/ 即while(scanf("%d %d %d",&y,&m,&d)!=EOF)