当前位置: 代码迷 >> C语言 >> [转载]计算任何一天是星期几的C语言源代码.
  详细解决方案

[转载]计算任何一天是星期几的C语言源代码.

热度:183   发布时间:2007-11-02 10:44:23.0
[转载]计算任何一天是星期几的C语言源代码.

#include <stdio.h>
int main()
{
int day,mn,yr,i,days=0,s,k;
int mont[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char wek[][9]={ {'S','u','n','d','a','y'},
{'M','o','n','d','a','y'},
{'T','u','e','s','d','a','y'},
{'W','e','d','n','s','d','a','y'},
{'T','h','u','r','s','d','a','y'},
{'F','r','i','d','a','y'},
{'S','a','t','u','r','d','a','y'}
};
printf("Inpute the date (year-month-day):");
scanf("%d-%d-%d",&yr,&mn,&day);
if (yr%4==0||yr%100==0||yr%400==0)
mont[2]=29;
else
mont[2]=28;
for (i=0;i<mn;i++)
days+=mont[i];
days+=day;
s=yr-1+(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-1)/400)+days;
k=s%7;
printf("%d-%d-%d is %s.",yr,mn,day,wek[k]);
return 0;
}

经过测试可以准确计算出输入的任何日期为星期几.
清多多指教.

搜索更多相关的解决方案: 源代码  C语言  

----------------解决方案--------------------------------------------------------
if (yr%4==0||yr%100==0||yr%400==0)

致命伤~

计算闰年的方法
公历纪年法中,能被4整除的大多是闰年,不能被100整除而能被400整除的年份是闰年,能被3200整除的也不是闰年,如1900年是平年,2000年是闰年,3200年不是闰年。

中国农历的“闰年”
中国旧历农历纪年中,有闰月的一年称为闰年。一般年份为12个月,354或355天,闰年则为13个月,383或384天

编程中公历闰年的简单计算方法:
设年份 year
if (year能被4整除 and 不能被100整除) or year能被400整除
then 该年为闰年
else 该年为平年

所以改为
if((yr%4==0 && yr%100!=0)||yr%400==0)
比较合适


----------------解决方案--------------------------------------------------------
大概看了下,判断闰年的地方:if (yr%4==0||yr%100==0||yr%400==0) //应为&&
LZ看一下。。
----------------解决方案--------------------------------------------------------
if (yr%4==0||yr%100==0||yr%400==0) //应为&&yr%400!=0

----------------解决方案--------------------------------------------------------
我汗``这么强!!
呵呵 我应用了 谢谢大家
----------------解决方案--------------------------------------------------------

2楼是对的,学习了。


----------------解决方案--------------------------------------------------------
s=yr-1+(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-1)/400)+days;
怎么理解啊
----------------解决方案--------------------------------------------------------
以下是引用diaoxue在2007-11-2 19:59:01的发言:
s=yr-1+(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-1)/400)+days;
怎么理解啊

(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-1)/400)

前面的int应该是强制转换类型吧吧...


----------------解决方案--------------------------------------------------------
完全看不明白哦!
----------------解决方案--------------------------------------------------------
s=yr-1+(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-1)/400)+days;
请教这个是什么意思呀???
----------------解决方案--------------------------------------------------------
  相关解决方案