鱼C论坛

 找回密码
 立即注册
查看: 957|回复: 2

[已解决]时间换算,求助!!!

[复制链接]
发表于 2021-12-18 12:54:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int h,m,s,n,ad;
  5.     scanf("%d:%d:%d",&h,&m,&s);
  6.     scanf("%d",&n);
  7.     ad=3600*h+60*m+s+n;
  8.     ad=ad%86400;
  9.     h=(ad-ad%3600)/3600;
  10.     ad=ad%3600;
  11.     m=(ad-ad%60)/60;
  12.     ad=ad%60;
  13.     s=ad;
  14.     printf("%02d:%02d:%02d",h,m,s);
  15.     }
复制代码

在小时换算公式这条看不懂求助!
最佳答案
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);
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-12-18 13:10:54 | 显示全部楼层
本帖最后由 jackz007 于 2021-12-18 13:17 编辑
  1.     h=(ad-ad%3600)/3600;    // 估计是怕 ad 不能被 3600 整除,所以,先从 ad 中减去 ad 除以 3600 的余数,然后再除,典型的画蛇添足!
复制代码
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.         int h , m , s , n , ad              ;
  5.         scanf("%d:%d:%d" , & h , & m , & s) ;
  6.         scanf("%d" , & n)                   ;
  7.         ad = 3600 * h + 60 * m + s + n      ;
  8.         ad %= 86400                         ;
  9.         h = ad / 3600                       ;
  10.         m = (ad % 3600) / 60                ;
  11.         s = ad % 60                         ;
  12.         printf("%02d:%02d:%02d",h,m,s)      ;
  13. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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);
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-25 13:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表