Week03-时间换算

By | 最新修改:2024-08-17

翁恺老师的 MOOC 课程 《程序设计入门-C语言》第三周的练习。(侵删)
我的答案只供参考,不能被用作其他人作为提交答案!

时间换算(5分)
题目内容:

UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。

有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。

你的程序要输出这个时间对应的UTC时间,输出的格式和输入的相同,即输出一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。

提醒:要小心跨日的换算。

输入格式:

一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。

输出格式:

一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。

输入样例:

803

输出样例:

3

时间限制:500ms内存限制:32000kb

我的答案:

/*================================================================
*   Copyright (C) 2019 程序知路. All rights reserved.
*   
*   Filename    :Week03-bjt_to_utc.c
*   Author      :程序知路
*   E-Mail      :admin@icxzl.com
*   Create Date :2019年09月24日
*   Description :
================================================================*/
#include <stdio.h>

int main() {

    int bjt;
    scanf("%d", &bjt);

    if (bjt >=0 && bjt <= 2359) {
        int bjt_hour = bjt / 100;
        int bjt_minute = bjt - bjt_hour * 100;
        int utc_hour = 0;

        if (bjt_minute < 60) {
            if (bjt_hour >= 8)
                utc_hour = bjt_hour - 8;
            else
                utc_hour = 24 - (8 - bjt_hour);

            if (utc_hour != 0)
                printf("%d", utc_hour);
            if (utc_hour != 0 && bjt_minute < 10)
                printf("0%d", bjt_minute);
            else 
                printf("%d", bjt_minute);

        }
    }

    return 0;
}

程序知路

鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,欢迎互相探讨,一起学习,共同进步。

本文章可以转载,但是需要说明来源出处!

本文使用的部分图片来源于网上,若是侵权,请与本文作者联系删除: admin@icxzl.com