关于闰年的小问题
#include <iostream.h>
int fun (int y,int m,int d)
{
int sum;
int leap;
switch(m)
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:
cout<<"data error"<<endl;
break;
}
sum=sum+d;
if(y%400==0&&(y&4==0&&y%100!=0))
leap=1;
else
leap=0;
if(leap==0&&m>2)
sum++;
return sum;
}
void main()
{
cout<<fun(2005,2,1)<<endl;
cout<<fun(2004,1,5)<<endl;
cout<<fun(2004,10,12)<<endl;
cout<<fun(2005,12,20)<<endl;
return;
}
我的问题如下:
关于if(leap==0&&m>2)这一条件语句我有疑惑。我的理解是这个条件是y为闰年且月份大于2时成立,而y为闰年应该是leap=1才对啊,为什么是leap=0呢?求解答
[解决办法]
代码有误
if(y%400==0&&(y&4==0&&y%100!=0))
明显&&应该是||
if(leap==0&&m>2)
sum++;
应该是leap==1
自己调试一下就知道了