时间换算,求助!!!
本题要求编写程序,以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: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) ;
} #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]