| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9247 人关注过本帖
标题:时间换算
只看楼主 加入收藏
小可爱0920
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2016-12-18
结帖率:90%
收藏
已结贴  问题点数:20 回复次数:4 
时间换算
时间换算:用结构类型表示时间内容(时间以时、分、秒表示),输入一个时间数值,再输入一个秒数n,以h:m:s的格式输出该时间再过n秒后的时间值(超过24点就从0点开始计时)。试编写相应程序。
下面是我的代码,如果输入的n过大,输出就会有问题,求助:应该怎么改,谢谢!!!
#include<stdio.h>
struct {
    int h,m,s;
}time;
int main()
{
    int x;
    scanf("%d%d%d",&time.h,&time.m,&time.s);
    scanf("%d",&x);
    time.s+=x;
    if(time.s>=60){
        time.m+=1;
        time.s=time.s-60;
        if(time.m>=60){
            time.h+=1;
            time.m=time.m-60;
            if(time.h==24){
                time.h=0;
            }
        }
    }
    printf("%d :%d :%d\n",time.h,time.m,time.s);
    return 0;
}


搜索更多相关主题的帖子: include 
2016-12-29 10:19
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:10 
先把它们全部转换成秒~把两个时间的秒数总和相加,然后再转换秒,分,时,秒大于60就分钟加1,分钟大于60就小时加1,小时大于24就取0~基本思路就是这样~

s1=time.s+time.m*60+time.h*3600+x;

time.s=s1%60;

time.m=(s1/60)%60;

time.h=(s1/24)%24;

这样改试试看~


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-29 10:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:10 
程序代码:
#include <stdio.h>

struct time
{
    int hour;
    int minute;
    int second;
};

void normal_time( struct time* ptime )
{
    int s = ptime->hour*3600 + ptime->minute*60 + ptime->second*1;
    s = (s%86400 + 86400)%86400;
    ptime->hour = s/3600;
    ptime->minute = s/60%60;
    ptime->second = s%60;
}

int main( void )
{
    struct time t;
    int n;
    scanf( "%d%d%d", &t.hour,&t.minute,&t.second );
    scanf( "%d", &n );

    t.second += n;
    normal_time( &t );
    printf( "%02d:%02d:%02d\n", t.hour, t.minute, t.second );

    return 0;
}
2016-12-29 10:54
小可爱0920
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2016-12-18
收藏
得分:0 
回复 3楼 rjsp
你好,没看懂s = (s%86400 + 86400)%86400这个是什么意思
2016-12-29 11:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
86400 是一天,也就是24小时的秒数
s%86400 是将秒数规划到正负一天之内。但要注意的是,如果s是负值,那么 s%86400 结果为负,
所以需要 再加上86400 使其必然为非负值。而加上86400后可能超过86400,所以需要再次模除86400。

比如,-50小时-100分-200秒 就应该是 20小时16分40秒
2016-12-29 11:19
快速回复:时间换算
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038535 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved