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来
咋回事
展开
 我来答
duck_week
2012-04-23 · TA获得超过148个赞
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:146万
展开全部
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;
}
更多追问追答
追问
printf("%d\n", ((11+(12/4)+(20/4)-2*20+((26*(14+1)/10)+2-1))%7) );
算了 还是不对 2012 2 2
我输入的 2011 14 2

结果5
追答
你先用下我那个函数试试
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式