显摆一下,自己写的万年历

由本社区发起的开源项目
头像
月下叹逍遥
论坛版主
帖子: 33994
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
联系:

显摆一下,自己写的万年历

#1

帖子 月下叹逍遥 » 2011-11-29 20:58

请大家多多指教 :em03
由于是月历,所以,算法采用每月的第一天是星期几的思路确定1号的位置,然后顺延下来,计算星期的方法采用蔡勒公式。
然后,比较重要的一点:罗马教皇格里高利十三世在1582年组织了一批天文学家,根据哥白尼日心说计算出来的数据,对儒略历作了修改。将1582年10月5日到14日之间的10天宣布撤销,继10月4日之后为10月15日。 所以只能计算1582年之后的月历。
[c]#include<stdio.h>
int Zeller(int y,int m);
int run(int n);
void main()
{
int year,month,i,j,k,n=1,day;
printf("欢迎使用万年历查询工具。\n");
printf("请输入要查询的年份(本程序只支持公元后纪年):\n");
scanf("%d",&year);
printf("请输入月份:\n");
scanf("%d",&month);
i=Zeller(year,month);
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:day=31;break;
case 4:
case 6:
case 9:
case 11:
day=30;break;
case 2:day=run(year);
}
printf(" S M T W T F S\n");
for(j=0;j<=5;j++)
{
for(k=0;k<=6;k++)
{
if((j==0)&&(j*4+k)<i)
printf(" ");
else
if(n<=day)
{
printf("%3d",n);
n++;
}
}
printf("\n");
}
}

int Zeller(int y,int m)
{
int w,c,d;
c=y/100;
d=y-c*100;
if(m<=2)
{
d-=1;
m+=12;
}
w=d+d/4+c/4-2*c+26*(m+1)/10;
while(w<0)
{
w+=7;
}
return w%7;
}

int run(int n)
{
if(n%100==0)
{
if(n%400==0)
return 29;
else
return 28;
}
else
{
if(n%4==0)
return 29;
else
return 28;
}
}[/c]
浮生七十今三十,从此凄惶未可知
头像
leeaman
帖子: 30702
注册时间: 2007-02-02 18:14
系统: debian sid

Re: 显摆一下,自己写的万年历

#2

帖子 leeaman » 2011-11-29 21:06

哇,南瓜精通多种语言哦,赞一个,不过这个程序实用了吗?
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)
头像
Ubuntu与Linux
帖子: 1211
注册时间: 2010-06-09 19:57

Re: 显摆一下,自己写的万年历

#3

帖子 Ubuntu与Linux » 2011-11-29 21:07

可以用一万年吗,少年? :em04
头像
月下叹逍遥
论坛版主
帖子: 33994
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
联系:

Re: 显摆一下,自己写的万年历

#4

帖子 月下叹逍遥 » 2011-11-29 21:12

Ubuntu与Linux 写了:可以用一万年吗,少年? :em04
可以。。。当然,要改一下蔡勒公式。。。罗马皇帝那个事闹得。。。。
浮生七十今三十,从此凄惶未可知
头像
月下叹逍遥
论坛版主
帖子: 33994
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
联系:

Re: 显摆一下,自己写的万年历

#5

帖子 月下叹逍遥 » 2011-11-29 21:14

leeaman 写了:哇,南瓜精通多种语言哦,赞一个,不过这个程序实用了吗?
测试无碍。。。VS2010,莫喷哦。。。 :em03 :em03 :em03
浮生七十今三十,从此凄惶未可知
头像
月下叹逍遥
论坛版主
帖子: 33994
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
联系:

Re: 显摆一下,自己写的万年历

#6

帖子 月下叹逍遥 » 2011-11-29 21:16

不改的话,能用个八千多年,估计够用了 :em04
浮生七十今三十,从此凄惶未可知
头像
leeaman
帖子: 30702
注册时间: 2007-02-02 18:14
系统: debian sid

Re: 显摆一下,自己写的万年历

#7

帖子 leeaman » 2011-11-29 21:17

win下面我用code::blocks,vs太慢了,不顾哦好像南瓜要fortun,老实说,俺不看几天看不明白门道的,南瓜 :em06
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)
头像
monk
帖子: 19507
注册时间: 2010-01-28 10:45

Re: 显摆一下,自己写的万年历

#8

帖子 monk » 2011-11-29 21:18

不务正业的南瓜

*********宁静致远*********
如果我说的有什么不对,请看签名第一行
头像
月下叹逍遥
论坛版主
帖子: 33994
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
联系:

Re: 显摆一下,自己写的万年历

#9

帖子 月下叹逍遥 » 2011-11-29 21:19

leeaman 写了:win下面我用code::blocks,vs太慢了,不顾哦好像南瓜要fortun,老实说,俺不看几天看不明白门道的,南瓜 :em06
是fortran啦。。。其实也不算会精通,C和fortran属于正式入门,AS是选修,python和VB则是自己瞎琢磨的。。。 :em03
浮生七十今三十,从此凄惶未可知
头像
qy117121
论坛版主
帖子: 50546
注册时间: 2007-12-14 13:40
系统: Winbuntu
来自: 志虚国乌由市
联系:

Re: 显摆一下,自己写的万年历

#10

帖子 qy117121 » 2011-11-29 21:27

monk 写了:不务正业的南瓜
渠月 · QY   
本人只会灌水,不负责回答问题
无聊可以点一下→ http://u.nu/ubuntu

Ubuntu 20.04 快速设置指南,请配合浏浏览器自动翻译使用

邮箱 chuan@ubuntu.org.cn
头像
月下叹逍遥
论坛版主
帖子: 33994
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
联系:

Re: 显摆一下,自己写的万年历

#11

帖子 月下叹逍遥 » 2011-11-29 21:28

:em91 :em91 :em91
qy117121 写了:
monk 写了:不务正业的南瓜
浮生七十今三十,从此凄惶未可知
头像
remeber
论坛版主
帖子: 13030
注册时间: 2009-01-06 15:18
来自: 人间

Re: 显摆一下,自己写的万年历

#12

帖子 remeber » 2011-11-29 21:29

码瓜。——《Herry Potter》
“有一种被人抛诸脑后的过去,包含一些不该遗忘的点点滴滴。欢笑之余,我将故旧拾起,才刹见自己的薄情。人世间似乎存在着某种公平,每个人都曾被抛掷在他人的遗忘中;而今你所有哽咽难宣的话语,也正是你曾为人所期盼,却永远听不见的字句。” —赫曼 赫塞
头像
月下叹逍遥
论坛版主
帖子: 33994
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
联系:

Re: 显摆一下,自己写的万年历

#13

帖子 月下叹逍遥 » 2011-11-29 21:30

:em36 :em36 :em36 :em36
remeber 写了:码瓜。——《Herry Potter》
浮生七十今三十,从此凄惶未可知
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 显摆一下,自己写的万年历

#14

帖子 eexpress » 2011-11-29 21:33

有农历没。
:em04
● 鸣学
头像
月下叹逍遥
论坛版主
帖子: 33994
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
联系:

Re: 显摆一下,自己写的万年历

#15

帖子 月下叹逍遥 » 2011-11-29 21:36

eexpress 写了:有农历没。
:em04
EE要求有点高。。。 :em20 :em20 :em20
貌似没找到农历的换算公式 :em20 :em20 :em20
浮生七十今三十,从此凄惶未可知
回复