精華區beta MATLAB 關於我們 聯絡資訊
※ 引述《NicolasY (走自己的路)》之銘言: : 小弟只差這題即可畢業了,請版上各位高手出手相助阿~~~~ : 題目如下: : 平年為365天,閏年將再多加一天(每四年一閏,每百年不閏)。試撰寫一個MATLAB程式, : 以計算"自民國某年某月某日迄今共經過多少天"。 : 使用者輸入資料:欲進行計算之民國yy年mm月dd日,今日為民國tyy年tmm月tdd日。 : 輸出請用fprintf以整數%d格式,按"自民國yy年mm月dd日迄民國tyy年tmm月tdd日.. : 共經過total_day日"之敘述內容輸出。 : 這題我想了很久...但是都沒頭緒,請各位高手們救救我吧!!!拜託了(鞠躬) 提示一下 先找一天作為reference day 分別計算輸入的兩個日期與這個ref. day的天數差距 最後相減就是結果啦 這種題目好像每個程設的課都會出的說 下面是我寫的code 我沒詳細去驗證出來的數字對不對 但是作法差不多 請自己check一下吧 %%%%%%%%%% codes start oldday=input('Input old day:(yymmdd)\n','s'); newday=input('Input today:(yymmdd)\n','s'); if length(oldday)~=6 || length(newday)~=6 % check format error('Day format not correct!'); end mdays=[31 28 31 30 31 30 31 31 30 31 30 31]; % days in month y1=str2num(oldday(1:2))+1910; y2=str2num(newday(1:2))+1910; m1=str2num(oldday(3:4)); m2=str2num(newday(3:4)); d1=str2num(oldday(5:6)); d2=str2num(newday(5:6)); bis1=floor(y1/4); % bissextile to year 1 bis2=floor(y2/4); % bissextile to year 2 bis3=floor(y1/100); % not bissextile in hundred years bis4=floor(y2/100); d2oldday=y1*365+bis1-bis3; % days to year 1, 1/1 d2newday=y2*365+bis2-bis4; % days to year 2, 1/1 d2oldday=d2oldday+sum(mdays(1:m1-1))+d1; % days to day 1 d2newday=d2newday+sum(mdays(1:m2-1))+d2; % days to day 2 if rem(y1+1,4)==0 && rem(y1+1,100)~=0 && m1>2 % check year 1 for bissextile d2oldday=d2oldday+1; end if rem(y2+1,4)==0 && rem(y2+1,100)~=0 && m2>2 % check year 2 for bissextile d2newday=d2newday+1; end totaldays=d2newday-d2oldday; % calculate days difference fprintf('自民國%d年%d月%d日迄民國%d年%d月%d日共經過%d日\n',... y1-1910,m1,d1,y2-1910,m2,d2,totaldays); %%%%%%%%%% codes end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.156.25 ※ 編輯: abin987 來自: 220.132.156.25 (07/06 01:32)
KevinT:被m了~~真是太兇猛了...@@|| 07/06 16:24
※ 編輯: abin987 來自: 220.132.156.25 (07/06 22:50)