gfzxy0724 发表于 2020-7-28 17:19:44

小白帖(勿嫌弃啊)

我的疑惑是为什么要对i(时间)进行判断,我认为直接执行else以下的语句也可以解决问题啊,进行判断不是多此一举吗?求大佬告知,谢谢!

有时候人们用四位数字表示一个时间,比如1106表示11点零6分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,即5点30分表示为530。注意,第二个数字表示的分钟数可能超过60,也可能是负数。
输入格式:
输入在一行中给出2个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即5点30分表示为530;流逝的分钟数可能超过60,也可能是负数。
[输出格式:
输出四位数字表示的终止时间。题目保证起始时间和终止时间在同一天内。
输入样例:
1120 110
输出样例:
1310
代码如下:
#include <stdio.h>
int main()
{
        int i, j, x = 0, y, z;
        scanf("%d%d", &i, &j);
        if(i >= 1000)
        {
             x = i / 1000;
             y = (i % 1000) / 100;
             z = (i %1000) %100;
        }
        else
        {
             y = i / 100;
             z = i % 100;
        }
        int s = (10*x + y) * 60 + z;
        int n = s + j;
        i = n / 60 *100 + (n - ((n / 60 )* 60));
        printf("%d", i);
        return 0;
}

rt3 发表于 2020-7-28 17:23:36

如果i<1000说明 输入的不是4位数字叭

gfzxy0724 发表于 2020-7-28 17:50:16

本帖最后由 gfzxy0724 于 2020-7-28 17:51 编辑

rt3 发表于 2020-7-28 17:23
如果i

好的了解,那么你看我下面的代码可以达到同样的结果吗
         int i, j,y, z;
           scanf("%d%d", &i, &j);
          y = i / 100;
          z = i % 100;
         int s = y * 60 + z;
       int n = s + j;
          i = n / 60 *100 + (n - ((n / 60 )* 60));
          printf("%d", i);

rt3 发表于 2020-7-28 21:39:19

gfzxy0724 发表于 2020-7-28 17:50
好的了解,那么你看我下面的代码可以达到同样的结果吗
         int i, j,y, z;
           scanf("%d%d ...

这太复杂了,看得我头疼,你问问别人叭

gfzxy0724 发表于 2020-7-29 10:52:54

rt3 发表于 2020-7-28 21:39
这太复杂了,看得我头疼,你问问别人叭

好的,谢谢

405794672 发表于 2020-7-29 16:18:04

你的看法是对的。该代码多此一举。把小时的十位和个位分开,然后十位乘以10+个数,又把它们合拢,再进行计算。这是神经病的做法。

gfzxy0724 发表于 2020-7-30 16:59:39

405794672 发表于 2020-7-29 16:18
你的看法是对的。该代码多此一举。把小时的十位和个位分开,然后十位乘以10+个数,又把它们合拢,再进行计 ...

谢谢{:5_109:}
页: [1]
查看完整版本: 小白帖(勿嫌弃啊)