回 帖 发 新 帖 刷新版面

主题:无敌的问题...

输入年月日,判断是星期几....

回复列表 (共8个回复)

沙发

公元前1121年6月10号是星期几?

板凳

取已知的一天,如2005年4月16日,星期六。
计算要求的那天到这一天的天数(有正负),mod 7就ok了。

3 楼

要用到闰年的判断:
(y mod 400 = 0) or (y mod 100 <> 0) and (y mod 4 = 0)
y是年。

4 楼

[em2]

5 楼

这种问题在很久前就见过啦!算什么无敌问题?
答案本来就在这个论坛,可是我找不到了。我当时贴了两个帖,一个是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 楼

好久以前编的题目了。思路上没什么难的,就是麻烦。只要仔细点就行。

7 楼

鼓掌。。。。。。。。。。。。。。。。。。。。。。。

8 楼

如果用的不是这种年历(农历阿什么的之类)

我也想知道

平时还蛮有用得东东

我来回复

您尚未登录,请登录后再回复。点此登录或注册