主题:无敌的问题...
sd5774188
[专家分:260] 发布于 2005-04-15 23:22:00
输入年月日,判断是星期几....
回复列表 (共8个回复)
沙发
methuselah [专家分:6840] 发布于 2005-04-16 10:21:00
公元前1121年6月10号是星期几?
板凳
huga3 [专家分:50] 发布于 2005-04-16 22:33:00
取已知的一天,如2005年4月16日,星期六。
计算要求的那天到这一天的天数(有正负),mod 7就ok了。
3 楼
huga3 [专家分:50] 发布于 2005-04-16 22:35:00
要用到闰年的判断:
(y mod 400 = 0) or (y mod 100 <> 0) and (y mod 4 = 0)
y是年。
4 楼
jtchang [专家分:5370] 发布于 2005-04-17 00:14:00
[em2]
5 楼
jtchang [专家分:5370] 发布于 2005-04-17 00:34:00
这种问题在很久前就见过啦!算什么无敌问题?
答案本来就在这个论坛,可是我找不到了。我当时贴了两个帖,一个是C语言的。答的就是你这个题目,另一个语言是pascal语言,回答的是另一个题目:输入年,月,打印出当月月历。比如:输入2005 4 打印出当月月历:
2005-4
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
两个问题其实是一样的。我贴个月历的给你,你自己去改程序啦!很久前编的,如果现在重编语句可能会简单好多,但是我懒得去改啦!
program prog;
var
year,month:integer;
m,n,i:integer;
function get_week(year:integer):integer;
var
x:integer;
begin
x:=year+(year-1) div 4 -(year-1) div 100 + (year-1) div 400;
get_week:=x mod 7;
end;
function leap(year:integer):boolean;
begin
leap:=false;
if year mod 100=0 then
if year mod 400=0 then
begin
leap:=true;
exit;
end
else exit;
if year mod 4=0 then leap:=true;
end;
function getdaysNum(year,month:integer):integer;
var
x:integer;
begin
case month of
1,3,5,7,8,10,12: x:=31;
2: if leap(year) then x:=29
else x:=28;
4,6,9,11: x:=30;
end;
getdaysNum:=x;
end;
begin
write('Enter year: '); readln(year);
write('Enter month: '); readln(month);
m:=get_week(year);
n:=0;
for i:=1 to month-1 do
n:=n+getdaysNum(year,i);
m:=(m+n) mod 7;
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:=getdaysNum(year,month);
for i:=1 to n do
begin
write(i:6);
m:=m+1;
if m mod 7=0 then writeln;
end;
writeln;
end.
6 楼
smallboat [专家分:60] 发布于 2005-04-19 23:00:00
好久以前编的题目了。思路上没什么难的,就是麻烦。只要仔细点就行。
7 楼
xuzhenyi [专家分:850] 发布于 2005-04-22 18:47:00
鼓掌。。。。。。。。。。。。。。。。。。。。。。。
8 楼
xuzhenyi [专家分:850] 发布于 2005-04-24 16:18:00
如果用的不是这种年历(农历阿什么的之类)
我也想知道
平时还蛮有用得东东
我来回复