Re: [問題] 請問一下有關萬年曆的東西

看板Fortran作者 (Dolphin)時間15年前 (2009/04/14 19:03), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
之前大一時留下的紀錄 既然有人需要 就給個參考吧 Program Calendar !------------- [程式說明] ------------- !簡介: 萬年曆程式 (執行後在螢幕上提示使用者利用鍵盤輸入所需資料, 最後輸出結果) !輸入: 1. 西元年份 (Year) ! 2. 月份 (Month) !輸出: 西元 Year 年 Month 月之月曆 ! !------------- [變數宣告] ------------- IMPLICIT NONE ! ***** 資料 ***** INTEGER, DIMENSION(12) :: Days_of_Monthes = & ! 陣列: 每個月的天數 (/ 31,28,31,30,31,30,31,31,30,31,30,31 /) ! ***** 輸入 ***** INTEGER :: Year, Month ! 年份, 月份 ! ***** 輸入 ***** CHARACTER(LEN=4), DIMENSION(31) :: Days ! 文字格式的日期 (長度皆為4個字元 ) CHARACTER(LEN=28) :: Title, Space, Bar ! 月曆標頭文字, 空白字串 ! ***** 暫存 ***** INTEGER :: Day, Leap ! 星期幾, 閏年年數 INTEGER :: Sum_Of_Days, Last_Row ! 天數總和, 月曆最後一列之天數 INTEGER :: I ! 迴圈計數器 !------------- [設定變數初始值] ------------- Title = " SUN MON TUE WED THU FRI SAT"A Bar = " ===========================" Space = " " ! ***** 文字格式的日期 (Part III 用到) ***** Days(1) = " 1" Days(2) = " 2" Days(3) = " 3" Days(4) = " 4" Days(5) = " 5" Days(6) = " 6" Days(7) = " 7" Days(8) = " 8" Days(9) = " 9" Days(10) = " 10" Days(11) = " 11" Days(12) = " 12" Days(13) = " 13" Days(14) = " 14" Days(15) = " 15" Days(16) = " 16" Days(17) = " 17" Days(18) = " 18" Days(19) = " 19" Days(20) = " 20" Days(21) = " 21" Days(22) = " 22" Days(23) = " 23" Days(24) = " 24" Days(25) = " 25" Days(26) = " 26" Days(27) = " 27" Days(28) = " 28" Days(29) = " 29" Days(30) = " 30" Days(31) = " 31" !------------- [程式開始] ------------- !------------- [ Part 0: 使用者輸入資料] ------------- WRITE(*,*) " " WRITE(*,'(1X, A,$)') "請輸入年份 (西元): " READ(*,*) Year WRITE(*,'(1X, A,$)') "請輸入月份 (1~12): " READ(*,*) Month WRITE(*,*) " " !------------- [ Part I: 閏年判斷] ------------- IF(MOD(Year,400)==0) Then Days_of_Monthes(2)=29 ELSE IF(MOD(Year,4)==0.AND.MOD(Year,100)/=0) THEN Days_of_Monthes(2)=29 END IF !------------- [ Part II: 計算給定年份之元旦為星期幾] ------------- ! ***** 前提: 西元元年(0001)的第一天是"星期一(Monday)" ***** Sum_Of_Days = 0 Year = Year - 1 ! 準備計算前 Year-1 年的總 天數 Leap = Year/4-Year/100+Year/400 ! 前 Year-1 年中, 閏年的年 數 Sum_Of_Days = 366*Leap + 365*(Year-Leap) ! 計算前 Year-1 年的總天數 DO I=1,Month-1 Sum_Of_Days = Sum_Of_Days + Days_of_Monthes(I) ! 加上第 Year 年的前 Month-1 月天數 END DO Day = MOD(Sum_Of_Days+1,7) ! 求出 Year/Month 的 1 號 為星期幾 !------------- [ Part III: 輸出月曆] ------------- Year = Year + 1 ! 回復至使用者輸入的年份值 WRITE(*,*) " 西元",Year,"年",Month,"月" WRITE(*,*) Bar WRITE(*,*) Title WRITE(*,*) Space(1:Day*4), Days(1:7-Day) ! 月曆的第一行只能再印出 7-Day 天 DO I=7-Day+1, Days_of_Monthes(Month), 7 ! 月曆第二行從 7-Day+1 日開始印, 每 7 天即換行 Last_Row = Days_of_Monthes(Month)-I IF(Last_Row>=7) THEN ! 判斷最後一行是否小於 7 天 WRITE(*,*) Days(I:I+6) ! 1. 大於等於 7 天: 全部印出 ELSE ! 2. 小於七天: 印出剩餘天數 WRITE(*,*) Days(I:I+Last_Row) END IF END DO WRITE(*,*) Bar WRITE(*,*) " " PAUSE END PROGRAM -- 18173 12/09 - □ (本文已被吃掉) 吃光光,口卡口卡 18174 12/09 - □ (本文已被吃掉) 18175 12/09 - □ (本文已被吃掉) 18176 12/09 - □ (本文已被吃掉) ▼▼▼▼ 18177 12/09 - □ (本文已被吃掉) ▲▲▲▲ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.214.194

04/14 19:14, , 1F
You are my hero!!..I love you!!
04/14 19:14, 1F

06/13 00:02, , 2F
I love you too!
06/13 00:02, 2F
文章代碼(AID): #19v6s5JV (Fortran)
文章代碼(AID): #19v6s5JV (Fortran)