花有重开之日 发表于 2021-12-18 12:54:30

时间换算,求助!!!

本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。#include <stdio.h>
int main()
{
    int h,m,s,n,ad;
    scanf("%d:%d:%d",&h,&m,&s);
    scanf("%d",&n);
    ad=3600*h+60*m+s+n;
    ad=ad%86400;
    h=(ad-ad%3600)/3600;
    ad=ad%3600;
    m=(ad-ad%60)/60;
    ad=ad%60;
    s=ad;
    printf("%02d:%02d:%02d",h,m,s);
    }
在小时换算公式这条看不懂求助!{:10_247:}

jackz007 发表于 2021-12-18 13:10:54

本帖最后由 jackz007 于 2021-12-18 13:17 编辑

    h=(ad-ad%3600)/3600;    // 估计是怕 ad 不能被 3600 整除,所以,先从 ad 中减去 ad 除以 3600 的余数,然后再除,典型的画蛇添足!
#include <stdio.h>
int main(void)
{
      int h , m , s , n , ad            ;
      scanf("%d:%d:%d" , & h , & m , & s) ;
      scanf("%d" , & n)                   ;
      ad = 3600 * h + 60 * m + s + n      ;
      ad %= 86400                         ;
      h = ad / 3600                     ;
      m = (ad % 3600) / 60                ;
      s = ad % 60                         ;
      printf("%02d:%02d:%02d",h,m,s)      ;
}

19592546 发表于 2021-12-18 15:43:02

#include <stdio.h>
int main()
{
    int h,m,s,n,ad;
    scanf("%d:%d:%d",&h,&m,&s);
    scanf("%d",&n);
    ad=3600*h+60*m+s+n;/*这个是加了n之后一共有多少秒*/
    ad=ad%86400;/*超过了86400秒了就是转到了第二天,重新算*/
    h=(ad-ad%3600)/3600;/*完全可以写成ad/3600,求时*/
    ad=ad%3600;/*除去整时剩下的秒数*/
    m=(ad-ad%60)/60;/*完全可以写成ad/60,求分*/
    ad=ad%60;/*除去整分整时剩下的秒数*/
    s=ad;/*多余的 不够60的秒就是s*/
    printf("%02d:%02d:%02d",h,m,s);
}
页: [1]
查看完整版本: 时间换算,求助!!!