首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言時間運算:時分秒加法進位處理

     編輯:關於C語言

問題描述

輸入兩個時間 a:b:c 和 d:e:f(時:分:秒),計算它們的和。秒、分滿 60 進位,時無上限。多組測試,首行輸入組數。

核心邏輯:逐級進位

  1. 秒相加:z = c + f; if (z>=60) { z-=60; y++; }
  2. 分相加:y += e; if (y>=60) { y-=60; x++; }
  3. 時相加:x = a + d(含進位)。

原始代碼優化

#include <stdio.h>

int main() {
    int T;
    scanf("%d", &T);
    while (T--) {
        int a,b,c, d,e,f;
        scanf("%d%d%d%d%d%d", &a,&b,&c, &d,&e,&f);
        int sec = c + f;
        int min = b + e + sec/60;
        int hour = a + d + min/60;
        sec %= 60; min %= 60;
        printf("%d %d %d", hour, min, sec);
        if (T) putchar('\n');
    }
    return 0;
}

關鍵改進

  • 整除取模合併進位:sec/60 直接得進位數,sec%=60 得餘秒,碼更簡潔。
  • 統一變量命名:hour, min, sec 語義清晰。
  • 輸入格式靈活:scanf 自動跳過空白,支援換行/空格分隔。

擴展:時間結構體封裝

typedef struct { int h,m,s; } Time;
Time add(Time t1, Time t2) {
    Time r; r.s = t1.s+t2.s; r.m = t1.m+t2.m+r.s/60; r.h = t1.h+t2.h+r.m/60;
    r.s%=60; r.m%=60; return r;
}

可進一步實現減法、比較、格式化輸出(%02d:%02d:%02d)等功能。

實際應用場景

  • 視頻/音頻編輯軟體時間碼計算。
  • 嵌入式 RTC(實時時鐘)驅動程式時間運算。
  • 日誌分析工具:時間戳差值統計。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved