主题:[讨论]另一万年历的问题<------30!!!!!!!!!!!!!!!!!!!!
tujunqiang
[专家分:150] 发布于 2005-11-09 09:33:00
若知道某年1月1日是星期N,那么按要求输出这个年的第K个月的日历.
回复列表 (共5个回复)
沙发
479686 [专家分:150] 发布于 2005-11-10 13:03:00
确定星期几就好办了
这个可以通过天数确定 不算难
板凳
jtchang [专家分:5370] 发布于 2005-11-10 22:28:00
呵呵~~事实上不必要知道某年的1月1日是星期几,可以推算出来的。输入年和月即可。我好久前都贴过程序的!不过这里的程序如果不加精,时间长了就被删噢!找都找不回到啦!我再贴一个给你看看:
program calendar;
Const
mdays:array[1..12] of integer=(31,28,31,30,31,30,31,31,30,31,30,31);
var
year,month,m,n,i:integer;
begin
write('Enter year , month: ');
readln(year,month);
m:=(year+(year-1) div 4-(year-1) div 100+(year-1) div 400) mod 7;
{m = 该年第一天星期几}
for i:=1 to month-1 do
begin
m := m+mdays[i];
if (i=2) and ((year mod 4=0) and (year mod 100<>0) or (year mod 400=0))
then m := m+1;
end;
m:=m mod 7; {m = 该月第一天星期几}
writeln;
writeln(year,'-',month);
writeln('SUN':6,'MON':6,'TUE':6,'WED':6,'THU':6,'FRI':6,'SAT':6);
for i:=0 to m-1 do write(' ':6);
n:=mdays[month];
if (month=2) and ((year mod 4=0) and (year mod 100<>0) or (year mod 400=0))
then n:=n+1; {n = 该月的天数}
for i:=1 to n do
begin
write(i:6);
m:=m+1;
if m mod 7=0 then writeln;
end;
writeln;
end.
例如输 2005 11
打印结果如果下:
2005-11
SUN MON TUE WED THU FRI SAT
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
3 楼
阿Ben [专家分:2200] 发布于 2005-11-12 18:26:00
请问能不能输出农历啊????
4 楼
jtchang [专家分:5370] 发布于 2005-11-12 22:03:00
农历通常在HTML文件里出现过(利用JavaScript),是列表检索,没办法计算出来,程序有够长的。曾经有个想法把它改编成pascal程序,但编起来太长了,还包含了二十四节气,所以我没有去改编。
5 楼
阿Ben [专家分:2200] 发布于 2005-12-10 23:15:00
原来农历这东西是没有规律可循的啊!
那么请问有谁知道,农历这东西是谁创立的?依据什么来创立的?
我来回复