7-15 然后是几点

news2024/7/4 4:24:28

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

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

输入格式:

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

输出格式:

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

输入样例:

1120 110

输出样例:

1310

鸣谢燕山大学穆运峰老师、用户任钰补充数据!

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

我的答案:
一、信息

1.用四位数表示时间

2.根据起始时间和流逝时间计算出终止时间

3.输入规则:第一个数是四位数表示时间,第二个数用分钟表示时间

4.小时数个位没有前导0

5.第二个数字可能分钟数超过六十且有可能为负数

二、分析

问题1:如何用四位数表示时间

我的答案:直接用int型表示就可以了

问题2:如何实现根据起始时间和流逝时间计算出终止时间

我的答案:

由于分钟和小时的模不一样所以我们把问题分解成两部分即小时部分和分钟部分。

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

这里错了——如果大于23那么就-24在同一天

第一部分为小时 第二部分为分钟
首先对分钟数进行除60,因为1h=60min且,数据是整型会导致精度丢失所以通过这个就能算出这个分钟占了多少小时这样把算出的小时和初始相加这样就得到了,然后考虑分钟问题这里我们通过对60取余就可以得到剩余的不满一小时的分钟数然后和分钟部分相加,这里就会出现两种情况

分钟进位

第一种是不进位

不进位那么我们就直接相加即可

第二种是进位

那么我们相加后先判断它是否大于60如果大于小时部分加1然后直接加在一起然后再减60.

我的错误答案:

#include<stdio.h>
int main(){
	int now,time,after,timehour,timeminute,nowhour,nowminute,afterhour,afterminute;
	scanf("%d %d",&now,&time);
	nowhour=now/60;
	nowminute=now%60;
	timehour=time/60;
	timeminute=time%60;
	afterhour=nowhour+timehour;
	afterminute=nowminute+timeminute;
	if(afterminute>60){
		afterminute=afterminute-60;
	}
	after=afterhour*100+afterminute;
	printf("%d",after);
} 

运行结果:

错误原因:

我的程序存在以下几个问题:

  1. 错误的时间单位
    我把小时当做了60分钟,这是错误的。小时应该用100来分割,因为输入的四位数时间表示中,前两位是小时,后两位是分钟。

  2. 分钟处理不全面
    如果afterminute超过60,我只减去了60。但考虑到流逝时间可以超过60分钟(例如120分钟、180分钟等),所以这样处理是不够的。你还需要处理afterminute的进位。

  3. 没有处理小时的进位
    如果afterhour超过24,需要循环到0-23之间。

  4. 没有处理负数情况
    据题意,流逝时间可以是负数,所以你需要处理这种情况。

考虑上述问题,我将修改我的程序:

C语言:

#include<stdio.h>
int main(){
    int now, time, after, timehour, timeminute, nowhour, nowminute, afterhour, afterminute;
    scanf("%d %d", &now, &time);
    
    nowhour = now / 100;      // 修改为100,用于提取小时
    nowminute = now % 100;    // 修改为100,用于提取分钟
    
    timehour = time / 60;     // 时间的小时部分由分钟转化而来
    timeminute = time % 60;
    
    afterhour = nowhour + timehour;
    afterminute = nowminute + timeminute;
    
    // 更完善的分钟处理
    while(afterminute >= 60) {
        afterhour++;
        afterminute -= 60;
    }
    while(afterminute < 0) {
        afterhour--;
        afterminute += 60;
    }
    
    // 处理小时的进位
    afterhour %= 24;
    
    after = afterhour * 100 + afterminute;
    printf("%d", after);
    return 0;
}

 C++:
 

#include <iostream>
using namespace std;

int main() {
    int start, elapsed;
    cin >> start >> elapsed;

    int hours = start / 100;
    int minutes = start % 100;

    // Add elapsed minutes to the current time
    minutes += elapsed;

    // Process the carry for minutes
    while (minutes >= 60) {
        hours++;
        minutes -= 60;
    }
    while (minutes < 0) {
        hours--;
        minutes += 60;
    }

    // Process the carry for hours
    hours %= 24;

    cout << hours;
    if (minutes < 10) {
        cout << "0";
    }
    cout << minutes << endl;
    return 0;
}

总结:

反思:

1. **错误的时间单位**:  
   - 我使用了`60`作为小时和分钟之间的分隔。这是不正确的,应该使用`100`来分隔。例如,`1120`表示`11`小时`20`分钟,而不是`18`小时`40`分钟。

   处理方案:仔细阅读和理解题目要求。确保正确理解了输入和输出格式。

2. **没有处理时间的循环性**:  
   - 如果`afterminute`超过`60`,我只减去了`60`。但是,可能存在多个小时的增加,因此需要循环处理。
   - 没有处理小时数超过`24`的情况。

   **建议**处理方案:考虑所有可能的边界情况。在时间问题中,经常需要处理时间的循环性。

3. **错误的时间进位**:  
   - 当分钟数超过60时,小时数应该加1。

   处理方案:确保逻辑和算法是正确的,注意进位和借位的情况。

4. **冗余的变量**:
   - 我定义了`timehour`和`timeminute`,但在时间问题上,我们不需要把流逝的时间转化为小时和分钟,因为我们可以直接添加或减去分钟。

  处理方案:减少不必要的变量和计算,简化代码。

5. **没有考虑负的流逝时间**:  
   - 根据题目描述,流逝的时间可以是负数,但我的代码没有处理这种情况。

   处理方案:总是检查题目是否有特殊或边界情况,并确保代码处理了这些情况。

综上所述,我的代码需要一些重要的修改才能解决这个问题。确保我深入理解题目的需求,并思考所有可能的输入情况。

背后缺失的能力:

1. **细致的阅读能力**:
    - 我可能没有仔细阅读或完全理解题目的要求,导致对小时和分钟的处理存在误解。
   
    **提高方法**: 
    - 当我遇到问题描述时,多次阅读并尝试总结关键信息。
    - 练习时,可以尝试做题后自己写题目的简化版本,看是否能准确捕捉关键点。

2. **逻辑思维与分析能力**:
    - 我在处理时间进位的逻辑上出现了漏洞,如分钟超过60只减去了60,没有处理小时的增加。
   
    **提高方法**:
    - 经常练习逻辑题和算法题,特别是那些需要深入思考和多步骤解答的题目。
    - 分析已有的解决方案,尝试理解其背后的逻辑,并自己手动模拟算法的执行过程。

3. **测试与验证能力**:
    - 根据我给出的代码,可能没有进行充分的测试,尤其是边界情况。
    
    **提高方法**:
    - 编写代码后,总是使用多种测试用例进行测试,包括常规情况、边界情况和可能的异常情况。
    - 学习使用断点和调试工具,它们可以帮助你更好地理解代码的执行流程并找出问题。

4. **问题解决策略**:
    - 代码中存在一些不必要的变量和处理,可能没有选择最佳的策略来解决问题。
    
    **提高方法**:
    - 当遇到问题时,先花时间思考并计划解决策略,而不是立即开始编码。
    - 分析不同的策略,评估其优劣,然后选择一个执行。

5. **学习与反思**:
    - 对已知的问题和错误进行深入的分析和反思,这是提高编程技能的关键。
   
    **提高方法**:
    - 在遇到问题或错误时,尝试自己找出原因并修复,而不是立即寻求帮助。
    - 反思每次编码的经验,总结学到的内容,并记录下来。

最后,不要灰心。每个人在学习编程的过程中都会犯错误。关键是从中学习并不断提高。多练习,勤于思考,经常反思,随着时间的推移,你会看到显著的进步。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/879262.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高效解决在pycharm环境下的UserWarning: loaded more than 1 DLL from .libs这类问题

文章目录 问题解决方案Plan APlan B 解决&#xff01; 问题 这说明因同时存在多个动态链接库而存在冲突&#xff0c;所以需要删除其中一个 解决方案 Plan A Plan B 如果Plan A没用&#xff0c;就重装numpy&#xff0c;因为这个库就是numpy的 pip uninstall numpy pip insta…

zabbix-6.4 监控 MySQL

目录 1、rpm安装zabbix_agentd服务 2、编写zabbix_agentd.conf文件 3、编写模板文件 4、创建mysql用户并赋权限 5、创建.my.cnf文件 6、将规则添加到SELinux策略中 注意&#xff1a; 若模板无法读取.my.cnf 信息&#xff0c;从而导致监控报错&#xff0c;可以尝试修改模…

使用Python将文本转换为语音的简易应用

正文&#xff1a; 在本篇博客中&#xff0c;我们将介绍如何使用Python编写一个简单的应用程序&#xff0c;将文本转换为语音。我们将使用pyttsx3库进行文本到语音的转换&#xff0c;并通过pygame库来播放生成的语音。 C:\pythoncode\new\text2speech.py 首先&#xff0c;我们…

ReentrantReadWriteLock

关于读写锁状态的存取 // ReentrantReadWriteLock.Sync static final int SHARED_SHIFT 16; static final int SHARED_UNIT (1 << SHARED_SHIFT); static final int MAX_COUNT (1 << SHARED_SHIFT) - 1; static final int EXCLUSIVE_MASK (1 <&l…

小白到运维工程师自学之路 第七十三集 (kubernetes应用部署)

一、安装部署 1、以Deployment YAML方式创建Nginx服务 这个yaml文件在网上可以下载 cat nginx-deployment.yaml apiVersion: apps/v1 #apiVersion是当前配置格式的版本 kind: Deployment #kind是要创建的资源类型&#xff0c;这里是Deploymnet metadata: #metadata是该资源…

快手商品详情数据API 抓取快手商品价格、销量、库存、sku信息

快手商品详情数据API是用来获取快手商品详情页数据的接口&#xff0c;请求参数为商品ID&#xff0c;这是每个商品唯一性的标识。返回参数有商品标题、商品标题、商品简介、价格、掌柜昵称、库存、宝贝链接、宝贝图片、商品SKU等。 接口名称&#xff1a;item_get 公共参数 名…

JS实现树形结构、一维数组以及map之间的转换

const treeData[ {id:1, name:中国, children:[ {id:11,name:河南省,children:[{id:111,name:南阳市,children:[{id:1111,name:淅川县,children:null}]},{id:112,name:郑州市,children:[{id:1121,name:中牟县,children:null}]}] }, {id:22,name:广东省,children:[{id:221,name:…

【【verilog典型电路设计之流水线结构】】

verilog典型电路设计之流水线结构 下图是一个4位的乘法器结构&#xff0c;用verilog HDL 设计一个两级流水线加法器树4位乘法器 对于流水线结构 其实需要做的是在每级之间增加一个暂存的数据用来存储 我们得到的东西 我们一般来说会通过在每一级之间插入D触发器来保证数据的联…

创建Azure资源锁

锁的介绍 在Azure中&#xff0c;资源锁是一种用于保护订阅、资源组或者单个资源的机制。它可以防止对受锁定的资源进行删除或修改操作&#xff0c;帮助确保资源的连续可用性和安全性。 Azure中的资源锁可以分为两种类型&#xff1a; 删除锁&#xff08;CanNotDelete&#xf…

实现Excel数据复制分录信息粘贴到金蝶单据体中

>>>适合KIS云专业版V16.0|KIS云旗舰版V7.0|K/3 WISE 14.0等版本<<< 实现Excel数据复制分录信息粘贴到金蝶单据体分录中,在采购订单|采购入库单|销售订单|销售出库单等类型单据中,以少量的必要字段在excel表格中按模板填列好,很方便快捷地复制到金蝶单据表体…

三分钟完美解决你的C盘内存过大爆红

一、清理回收站 二、清理桌面 建议一 不要在桌面放太多图标或者文件会占用过多的内存,可以放到其他盘建议二、 将位置移动到别的盘 三、手动删除下载文件与缓存文件 日常使用中会通过Windows下载各种文件资料到电脑中&#xff0c;它默认也是直接下载在C盘中的。如果我们在以…

ssm+JSP的乡镇自来水收费系统源码和论文PPT

ssmJSP的乡镇自来水收费系统源码和论文PPT014 开发工具&#xff1a;idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具&#xff1a;navcat,小海豚等 开发技术&#xff1a;java ssm tomcat8.5 一、课题背景与意义 随着我国经济建设迅速发展&#xff0c;乡镇规模日益扩大&am…

RK3568 HDMI接口

一.简介 HDMI接口&#xff0c;中文全称为高清多媒体接口。是一种全数字化视频以及声音发送接口&#xff0c;能够发送没有压缩的音频以及视频信号。HDMI接口可以使用在机顶盒、DVD播放机等设备商。除此之外&#xff0c;HDMI接口还可以同时发送音频以及视频信号&#xff0c;简化…

22款美规奔驰GLS450更换AMG GLS63原厂刹车卡钳系统,刹车效果强悍无比

AMG出品的大六活塞卡钳及大直径开孔刹车碟&#xff0c;所组成的制动套件。这套AMG出品的卡钳为制动生产名厂BREMBO为其代工&#xff0c;刹车碟是高锻钢锻造&#xff0c;耐高温耐用性能较高且打孔设计。

什么是事务,并发带来的事务问题以及事务隔离级别(图文详解)

一、什么是事务&#xff1f; 简单说就是逻辑上的一组操作&#xff0c;要么都执行&#xff0c;要么都不执行。 举个例子&#xff0c;假如小明要给小红转账100元&#xff0c;这个转账会涉及到两个关键操作&#xff1a;①将小明的余额减少100元。 ②将小红的余额增加100元 。但…

【左神算法刷题班】第18节:汉诺塔问题、岛屿问题、最大路径和问题

第18节 题目1&#xff1a;汉诺塔问题&#xff08;变体&#xff09; 体系学习班18节有讲暴力递归的汉诺塔原题。 给定一个数组arr&#xff0c;长度为N&#xff0c;arr中的值只有1&#xff0c;2&#xff0c;3三种 arr[i] 1&#xff0c;代表汉诺塔问题中&#xff0c;从上往下第…

Azure添加网络接口

添加网络接口的意义 在 Azure 上&#xff0c;为虚拟机添加网络接口的意义包括以下几个方面&#xff1a; 扩展网络带宽&#xff1a;通过添加多个网络接口&#xff0c;可以增加虚拟机的网络带宽&#xff0c;提高网络传输速度和数据吞吐量。实现网络隔离&#xff1a;每个网络接口…

网络安全体系架构介绍

网络安全体系是一项复杂的系统工程&#xff0c;需要把安全组织体系、安全技术体系和安全管理体系等手段进行有机融合&#xff0c;构建一体化的整体安全屏障。针对网络安全防护&#xff0c;美国曾提出多个网络安全体系模型和架构&#xff0c;其中比较经典的包括PDRR模型、P2DR模…

2021年06月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;数字放大 给定一个整数序列以及放大倍数x&#xff0c;将序列中每个整数放大x倍后输出。 时间限制&#xff1a;1000 内存限制&#xff1a;65536 输入 包含三行&#xff1a; 第一行为N&#xff0c;表示整数序列的长度(N ≤ 100); 第二行为N个整数(不超过整型范围…

一个脚本 专治杂乱

背景 之前不是自己手动搞了一个COS嘛&#xff0c;直接复制粘贴图片&#xff0c;上传到后端的服务器&#xff0c;返回一个可访问的地址。我在哔哩哔哩上也分享过这样的一期视频。 今天偶尔上服务器一看&#xff0c;我靠&#xff0c;我的文件真的乱&#xff01; 这还得了了&…