亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

需要計算相應的時間差,請問該怎么辦?

需要計算相應的時間差,請問該怎么辦?

心有法竹 2022-06-17 18:11:30
題目描述在計算機系統的時間顯示上,通常以hh:mm:ss格式來顯示,即時:分:秒,每段均以兩個數位顯示,如12:02:59,表示12時2分59秒?,F給出兩個這樣格式的時間,請計算出它們的時間差,并以該格式顯示出來。輸入格式共兩行,每行均為按hh:mm:ss格式的時間信息。輸出格式一行,按hh:mm:ss 格式輸出時間差。樣例輸入00:00:0100:01:00樣例輸出00:00:59數據規模
查看完整描述

2 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

估計這道題不讓用DateTime的相關函數,否則太簡單了。 下面的例子,從校驗用戶的輸入,直到計算時間差,都是用系統的其他函數(非datetime相關),有效時間的范圍是:00:00:00~24:00:00 ,可以個位輸出,例: 0:1:2. --- 為了對比,給出了使用TDateTime相關函數及不使用的方法。


program time_difference;uses strutils, sysutils;type     //方法一: 使用TDateTime    function getTimeDiff(const stime1 : stringconst stime2 : stringvar sdiff: string) : Boolean;    var        dt1, dt2, dtdiff: TDateTime;    begin        try            dt1 := StrToDateTime(stime1);            dt2 := StrToDateTime(stime2);            dtdiff := dt1 - dt2;            DateTimeToString(sdiff, 'hh:mm:ss', dtdiff);        except            on E:EConvertError do exit(false);        end;                getTimeDiff := true;    end;    //方法二: 不使用TDateTime    function getTimeDiff_2(const stime1 : stringconst stime2 : stringvar sdiff: string) : Boolean;    var        time_1, time_2, time_diff : longint;                t_hour, t_minute, t_second : longint;        begin        if not getTimeInSeconds(stime1, time_1) then exit(false);        if not getTimeInSeconds(stime2, time_2) then exit(false);        time_diff := time_1 - time_2;        if time_diff < 0 then time_diff := -time_diff;        t_hour :=  time_diff div 3600;        t_minute :=  time_diff mod 3600 div 60;        t_second :=  time_diff - t_hour * 3600 - t_minute * 60;        sdiff := Format('%.2d:%.2d:%.2d', [t_hour, t_minute, t_second]);        exit(true);    end;    //方法二用到的函數    function getTimeInSeconds(const stime : stringvar time_in_seconds : longint) : Boolean;    var        s_hh, s_mm, s_ss : string;        hour, minute, second, errcode : integer;    begin        s_hh := ExtractDelimited(1, stime, [':']);        s_mm := ExtractDelimited(2, stime, [':']);        s_ss := ExtractDelimited(3, stime, [':']);        Val(s_hh, hour, errcode); if errcode <> 0 then exit(false);        Val(s_mm, minute, errcode); if errcode <> 0 then exit(false);        Val(s_ss, second, errcode); if errcode <> 0 then exit(false);        if not (hour in [0..24]) then exit (false);        if not (minute in [0..59]) then exit (false);        if not (second in [0..59]) then exit (false);        if (hour = 24and ( (minute <> 0or (second <> 0) ) then exit(false);                time_in_seconds := hour * 3600 + minute * 60 + second;        exit(true);    end;//主程序var    stime1, stime2 : String;    //t_sec_1, t_sec_2 : Longint;    stdiff : string;begin            writeln ('Input two times (hh:mm:ss):');    readln(stime1);    readln(stime2);         //方法一    if getTimeDiff(stime1, stime2, stdiff) then        writeln(stdiff)    else        writeln('Error happened.');     //方法二    if getTimeDiff_2(stime1, stime2, stdiff) then        writeln('Diff. ', stdiff)    else        writeln('Error happened.');     end.

運行:


Input two times (hh:mm:ss):12:34:5623:45:001. 11:10:042. 11:10:04




查看完整回答
反對 回復 2022-06-20
?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

const
m=300;
var i:byte;
a,b,s:integer;
begin
b:=0;s:=0;
for i:=1 to 12 do
begin
read(a);
if a>m+b then
begin
writeln(-i);
exit;
end;
if m+b-a>=100
then
begin
s:=s+100*((m+b-a) div 100);
b:=(m+b-a)mod 100;
end
else b:=m+b-a;
end;
writeln(1.2*s+b:0:0);
end.

wikioi里面的1057


查看完整回答
反對 回復 2022-06-20
  • 2 回答
  • 0 關注
  • 140 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號