• PTA——7-2 然后是几点 (15分)


    题目地址

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

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

    输入格式:

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

    输出格式:

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

    输入样例:

    1120 110
    
     

    输出样例:

    1310

    原先思路,分为 分钟区段mine(f) 和 小时区段(hour) 来处理进位、借位的情况

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    int main(){
        int a[4];
        memset(a,0,sizeof(a));
        int x,y;
        scanf("%d %d",&x,&y);
        int i =3;
        while(x != 0){
            int t  = x %10;
            x /= 10;
            a[i] = t;
            i--;
        } //得到初始时间的各位数
        int jw = y/60;  //得到流逝小时数
        int yu = y%60; //得到不进位流逝分钟数(<60)
        int mine =  a[2]*10 + a[3];
        if(mine == 0){ //如果初始时间分钟数为0,直接先令分钟位+不进位流逝分钟数
    //以处理 0-n 时需要向前借位的情况
            mine = 60 + yu;
            a[1]--;
        }else{
            mine = mine + yu;
        }
        int f  = 0;
        if(mine >= 60){  //搭配前一个if 判断,处理各种情况下的分钟 进位、借位情况
            f = mine - 60;
            a[1]++;
        }else{
            f = mine;
        }
        int hour = a[0]*10 + a[1];
        hour = hour + jw;
        if(f < 10){
            printf("%d0%d",hour,f);
        }else{
            printf("%d%d",hour,f);
        }
        return 0;
    }

    更简便的思路:

    #include <stdio.h>
    #include <math.h>
    int main (void)
    {
          int start, min1;
          int min2, time;
          int end;
          scanf("%d%d", &start, &min1);
          min2 = start / 100 * 60 + start % 100;//计算start表示的时间距离00:00有多少分钟,将小时数转换为分钟,避免出现未进位的情况
          time = min2 + min1;
          end = time / 60 *100 + time % 60;
          printf ("%d", end);
    }
  • 相关阅读:
    CSS3中新增的对文本和字体的设置
    PAT1107:Social Clusters
    Git的一些操作
    PAT1029:Median
    PAT1024:Palindromic Number
    PAT1028:List Sorting
    PAT1035: Password
    PAT1133:Splitting A Linked List
    PAT1017:Queueing at Bank
    PAT1105:Spiral Matrix
  • 原文地址:https://www.cnblogs.com/expedition/p/12200290.html
Copyright © 2020-2023  润新知