第一个do~while和第二个do~while循环的逻辑就有错误。以n==1为例说明:进入第一个do后,由于1900不是闰年,所以everyear==365,n=n-everyear;使n==-364,因n<0而结束循环;进入第二个do后n=n-evermonth;使n==-364-31(或30或29或28)结果是个负数,因而第二个do~while循环也退出。这时day=n;使day获得了一个近400的负数,后面输出自然不可能正确……第一个循环里的year的计算也是错的,已经i++了,还来个year=i+1;,这一次就增加了两年……
计算到1900-01-01之间的天数,再和7取余
~