int main()
{
// y-年,m-月,d-日,n-第几天
int y, m, d, n;
// 请在此添加代码,计算并输出指定日期是第几天
/********** Begin *********/
cin>>y>>m>>d;
n=d;
//if((y%400==0)||(y%4==0&&y%100!=0)){
switch(m)
{
case 1:
n=n;
break;
case 2:
n=31+n;
break;
case 3:
if((y%400==0)||(y%4==0&&y%100!=0))
n=31+29+n;
else
n=31+28+n;
break;
case 4:
n=31+29+31+n;
break;
case 5:
n=31+29+31+30+n;
break;
case 6:
n=31+29+31+30+31+n;
break;
case 7:
n=31+29+31+30+31+30+n;
break;
case 8:
n=31+29+31+30+31+30+31+n;
break;
case 9:
n=31+29+31+30+31+30+31+31+n;
break;
case 10:
n=31+29+31+30+31+30+31+31+30+n;
break;
case 11:
n=31+29+31+30+31+30+31+31+30+31+n;
break;
case 12:
n=31+29+31+30+31+30+31+31+30+31+30+n;
break;
return n;
}
/********** End **********/
printf("%d-%d-%d是第%d天\n",y,m,d,n);
return 0;
}
2017-6-15,为什么输出是167天?(闰年才是167)
正确答案是:
int main()
{
// y-年,m-月,d-日,n-第几天
int y, m, d, n;
// 请在此添加代码,计算并输出指定日期是第几天
/********** Begin *********/
cin >> y >> m >> d;
n = d;
switch(m)
{
case 12:
n += 30;
case 11:
n += 31;
case 10:
n += 30;
case 9:
n += 31;
case 8:
n += 31;
case 7:
n += 30;
case 6:
n += 31;
case 5:
n += 30;
case 4:
n += 31;
case 3:
if((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
n += 29;
else
n += 28;
case 2:
n += 31;
case 1:;
}
/********** End **********/
printf("%d-%d-%d是第%d天\n",y,m,d,n);
return 0;
}
一个礼拜后来修改答案,我知道我错在哪了,我把三月份之后都加了29天(平年也被我算成闰年了。可以在后面补救,在后面加个平年的情况,if(!y%400!=0||y%4==0&&y%100!=0),如果m>2,n--