C++PTA题解(2)——然后是几点

题目信息

题名:然后是几点

题目:有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。

读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。

输入格式:输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530;0 点 30 分表示为 030。流逝的分钟数可能超过 60,也可能是负数。

输出格式:输出不多于四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。

分析题目

这道题与小鱼的游泳时间有些相似,都是求时间,但这道题的难度要比那道题多出一点。那道题是给出两个时间点,求中间时间。这道题是给出1个时间点和中间时间,求第二个时间点。而且那道题给出的两个时间点是四个不同的数字(变量),这道题是集成在1个数字里。

先说一下大致思路吧:

  1. 先声明两个变量
  2. 再声明四个变量
  3. 输入前两个变量
  4. 计算后两个变量
  5. 判断b是否大于0
  6. 计算后四个变量
  7. 输出后两个变量

这么说不是很详细,这里就说4和6吧(就他们两个难)

4的意思是通过/100和%100的形式获取小时数

6的意思是通过h1=h1+(m1+b)/60;
                       m1=(m1+b)%60;这个计算分钟大于0的情况下的时间

或者是通过int con=h1*60+m1+b;
                  h1=con/60;
                  m1=con%60;这个计算分钟小于0(负数)的情况下的时间

示例代码

有了上面的核心代码,这道题就差不多了

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a,b;
    int h1,h2,m1,m2;
    cin>>a>>b;
    h1=a/100;
    m1=a%100;
    if(b>=0){
        h1=h1+(m1+b)/60;
        m1=(m1+b)%60; 
    }else{ 
        int con=h1*60+m1+b;
        h1=con/60;
        m1=con%60;
    }
    printf("%d%02d",h1,m1);
    return 0;
}
posted @ 2022-07-19 19:46  GitTJBKBeta  阅读(56)  评论(0编辑  收藏  举报