分页: 1 / 3

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

发表于 : 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]

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

发表于 : 2011-11-29 21:06
leeaman
哇,南瓜精通多种语言哦,赞一个,不过这个程序实用了吗?

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

发表于 : 2011-11-29 21:07
Ubuntu与Linux
可以用一万年吗,少年? :em04

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

发表于 : 2011-11-29 21:12
月下叹逍遥
Ubuntu与Linux 写了:可以用一万年吗,少年? :em04
可以。。。当然,要改一下蔡勒公式。。。罗马皇帝那个事闹得。。。。

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

发表于 : 2011-11-29 21:14
月下叹逍遥
leeaman 写了:哇,南瓜精通多种语言哦,赞一个,不过这个程序实用了吗?
测试无碍。。。VS2010,莫喷哦。。。 :em03 :em03 :em03

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

发表于 : 2011-11-29 21:16
月下叹逍遥
不改的话,能用个八千多年,估计够用了 :em04

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

发表于 : 2011-11-29 21:17
leeaman
win下面我用code::blocks,vs太慢了,不顾哦好像南瓜要fortun,老实说,俺不看几天看不明白门道的,南瓜 :em06

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

发表于 : 2011-11-29 21:18
monk
不务正业的南瓜

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

发表于 : 2011-11-29 21:19
月下叹逍遥
leeaman 写了:win下面我用code::blocks,vs太慢了,不顾哦好像南瓜要fortun,老实说,俺不看几天看不明白门道的,南瓜 :em06
是fortran啦。。。其实也不算会精通,C和fortran属于正式入门,AS是选修,python和VB则是自己瞎琢磨的。。。 :em03

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

发表于 : 2011-11-29 21:27
qy117121
monk 写了:不务正业的南瓜

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

发表于 : 2011-11-29 21:28
月下叹逍遥
:em91 :em91 :em91
qy117121 写了:
monk 写了:不务正业的南瓜

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

发表于 : 2011-11-29 21:29
remeber
码瓜。——《Herry Potter》

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

发表于 : 2011-11-29 21:30
月下叹逍遥
:em36 :em36 :em36 :em36
remeber 写了:码瓜。——《Herry Potter》

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

发表于 : 2011-11-29 21:33
eexpress
有农历没。
:em04

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

发表于 : 2011-11-29 21:36
月下叹逍遥
eexpress 写了:有农历没。
:em04
EE要求有点高。。。 :em20 :em20 :em20
貌似没找到农历的换算公式 :em20 :em20 :em20