关于数学家高斯的问题
#include "stdio.h"//1 3 5 7 8 12 31days// // 4 6 9 11 10 30days,闰年:能被四整除,同时不能被100整除 或者 能够400整除//5343的答案为1791年12月15日。 8113的答案为1799-7-16 我的答案总是偏移1或者2天,求指正错误。数据太大,当局者迷了。 DEBUG貌似这时候不管用了 是算法的问题 我也没觉得我的算法错了呀
int main()
{
while(1)
{
int bornyear=1777;
int bornmonth=4;
int bornday=30;
int num;
printf("请输入高斯意义数:");
scanf("%d",&num);
//进行月份和日期的操作//
while(num!=0)
{
switch(bornmonth)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 12:if(bornday>31)
{
++bornmonth;
bornday-=31;
}break;
case 4:
case 6:
case 9:
case 10:
case 11:if(bornday>30)
{
++bornmonth;
bornday-=30;
}break;
}
if((bornyear%4==0&&bornyear%100!=0)||bornyear%400==0)
{
if(bornmonth==2&&bornday>29)
{
++bornmonth;
bornday-=29;
}
}
else
{
if(bornmonth==2&&bornday>28)
{
++bornmonth;
bornday-=28;
}
}
//进行年份的操作//
if(bornmonth>12)
{
++bornyear;
bornmonth-=12;
--bornday;
}
bornday++;
num--;
}
printf("%d--%d--%d\n",bornyear,bornmonth,bornday);
}
}