7-14 然后是幾點 (15 分)


7-14 然后是幾點 (15 分)

題目來自https://pintia.cn/

有時候人們用四位數字表示一個時間,比如 1106 表示 11 點零 6 分。現在,你的程序要根據起始時間和流逝的時間計算出終止時間。

讀入兩個數字,第一個數字以這樣的四位數字表示當前時間,第二個數字表示分鍾數,計算當前時間經過那么多分鍾后是幾點,結果也表示為四位數字。當小時為個位數時,沒有前導的零,例如 5 點 30 分表示為 530;0 點 30 分表示為 030。注意,第二個數字表示的分鍾數可能超過 60,也可能是負數。

輸入格式:

輸入在一行中給出 2 個整數,分別是四位數字表示的起始時間、以及流逝的分鍾數,其間以空格分隔。注意:在起始時間中,當小時為個位數時,沒有前導的零,即 5 點 30 分表示為 530;0 點 30 分表示為 030。流逝的分鍾數可能超過 60,也可能是負數。

輸出格式:

輸出不多於四位數字表示的終止時間,當小時為個位數時,沒有前導的零。題目保證起始時間和終止時間在同一天內。

輸入樣例:

1120 110



結尾無空行

輸出樣例:

1310



結尾無空行

答案1(錯誤):

沒有考慮很多,直接寫的結果。。。

#include<stdio.h>
int main(){
    int startTime,through;
    scanf("%d %d",&startTime,&through);
    int h = startTime / 100;
    int m = startTime % 100;
    if(h + through / 60 < 24 && h + through / 60 >=0 && (h + through / 60 + (m + through % 60) / 60)*100+(m + through % 60) % 60 >= 0){
        if(h + through / 60 + (m + through % 60) / 60 < 10){
            printf("%03d",(h + through / 60 + (m + through % 60) / 60)*100+(m + through % 60) % 60);
        }else{
            printf("%04d",(h + through / 60 + (m + through % 60) / 60)*100+(m + through % 60) % 60);
        }
    }else{
        printf("error");
    }
    return 0;
}

答案2(正確):

億點點修改

#include<stdio.h>
int main(){
    int start,past,hour1,mins1,hour2,mins2,hour,mins;
    scanf("%d %d",&start,&past);
    hour1 = start / 100;//起始時間的小時
    mins1 = start % 100;//起始時間的分鍾
    hour2 = past / 60;//流逝時間的小時
    mins2 = past % 60;//流逝時間的分鍾
    hour = hour1 + hour2 + (mins1 + mins2) / 60;//終止時間的小時,分鍾和大於60,小時+1
    mins = (mins1 + mins2) % 60;//終止時間的分鍾
    if(past >= 0 && hour >=0 && hour < 24){//1.考慮流逝時間大於0的情況;2.保證起始時間和終止時間在同一天內
       printf("%d%02d",hour,mins);//小時和分鍾分開輸出,不必考慮小時為個位數的情況
    }else{//考慮流逝時間小於0的情況
       printf("%d%02d",hour-1,mins + 60);//小時-1,分鍾+60,變負為正
    }
    return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM