C语言算星期几
#include<stdio.h>intmain(void){printf("%d\n",((12+(12/4)+(20/4)-2*20+((26*(2+1)/10)+2...
# include <stdio.h>
int main(void)
{
printf("%d\n", ((12+(12/4)+(20/4)-2*20+((26*(2+1)/10)+2-1))%7) );// 为什么这公式 会算出-5来
return 0;
}
2012 5 1 也是会算出 -5来
咋回事 展开
int main(void)
{
printf("%d\n", ((12+(12/4)+(20/4)-2*20+((26*(2+1)/10)+2-1))%7) );// 为什么这公式 会算出-5来
return 0;
}
2012 5 1 也是会算出 -5来
咋回事 展开
1个回答
展开全部
int DayOfWork(unsigned short iiYear, unsigned short iiMonth, unsigned short iiDay) const
{
//注意:在公式中有个与其他公式不同的地方:
//把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
assert( iiMonth >= 1 && iiMonth <= 12 );
assert( iiDay >= 1 && iiDay <= 31);
unsigned short iYear = iiYear;
unsigned short iMonth = iiMonth;
unsigned short iDay = iiDay;
if ( iiMonth == 1 || iiMonth == 2)
{
iYear = iYear - 1;
iMonth = iMonth + 12;
}
return ( iDay + 2 * iMonth + 3 * ( iMonth + 1) / 5 + iYear + iYear / 4 - iYear / 100 + iYear / 400 ) % 7 + 1;
}
{
//注意:在公式中有个与其他公式不同的地方:
//把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
assert( iiMonth >= 1 && iiMonth <= 12 );
assert( iiDay >= 1 && iiDay <= 31);
unsigned short iYear = iiYear;
unsigned short iMonth = iiMonth;
unsigned short iDay = iiDay;
if ( iiMonth == 1 || iiMonth == 2)
{
iYear = iYear - 1;
iMonth = iMonth + 12;
}
return ( iDay + 2 * iMonth + 3 * ( iMonth + 1) / 5 + iYear + iYear / 4 - iYear / 100 + iYear / 400 ) % 7 + 1;
}
更多追问追答
追问
printf("%d\n", ((11+(12/4)+(20/4)-2*20+((26*(14+1)/10)+2-1))%7) );
算了 还是不对 2012 2 2
我输入的 2011 14 2
结果5
追答
你先用下我那个函数试试
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询