| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1359 人关注过本帖
标题:[转载]计算任何一天是星期几的C语言源代码.
只看楼主 加入收藏
C语言的深度
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:卡特的怀抱
等 级:版主
威 望:1
帖 子:9577
专家分:19
注 册:2007-10-22
结帖率:100%
收藏
 问题点数:0 回复次数:9 
[转载]计算任何一天是星期几的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语言 
2007-11-02 10:44
zzjking
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2007-7-16
收藏
得分:0 
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)
比较合适


2007-11-02 11:02
hczsea
Rank: 2
等 级:论坛游民
帖 子:129
专家分:68
注 册:2007-10-23
收藏
得分:0 
大概看了下,判断闰年的地方:if (yr%4==0||yr%100==0||yr%400==0) //应为&&
LZ看一下。。
2007-11-02 11:51
hczsea
Rank: 2
等 级:论坛游民
帖 子:129
专家分:68
注 册:2007-10-23
收藏
得分:0 
if (yr%4==0||yr%100==0||yr%400==0) //应为&&yr%400!=0
2007-11-02 11:53
C语言的深度
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:卡特的怀抱
等 级:版主
威 望:1
帖 子:9577
专家分:19
注 册:2007-10-22
收藏
得分:0 
我汗``这么强!!
呵呵 我应用了 谢谢大家

用代码打出楼房...用编程编出幸福...
2007-11-02 13:16
hczsea
Rank: 2
等 级:论坛游民
帖 子:129
专家分:68
注 册:2007-10-23
收藏
得分:0 

2楼是对的,学习了。

2007-11-02 14:04
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
得分:0 
s=yr-1+(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-1)/400)+days;
怎么理解啊

上善若水,水善利万物而不争,处众人之所恶
2007-11-02 19:59
_2007
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-7-13
收藏
得分:0 
以下是引用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应该是强制转换类型吧吧...


那把砍掉索伦手指上魔戒的举世无双的纳西尔圣剑,而不是成为你心中永远的魔戒。---IKAKA
2007-11-02 20:55
manm
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-11-1
收藏
得分:0 
完全看不明白哦!
2007-11-03 10:06
yixiaowz
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2007-11-3
收藏
得分:0 
s=yr-1+(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-1)/400)+days;
请教这个是什么意思呀???

2007-11-07 22:42
快速回复:[转载]计算任何一天是星期几的C语言源代码.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019309 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved