7-15 然后是几点

有时候人们用四位数字表示一个时间,比如 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 timeminutes += elapsed;// Process the carry for minuteswhile (minutes >= 60) {hours++;minutes -= 60;}while (minutes < 0) {hours--;minutes += 60;}// Process the carry for hourshours %= 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.rhkb.cn/news/90555.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Vue-Router】嵌套路由

footer.vue <template><div><router-view></router-view><hr><h1>我是父路由</h1><div><router-link to"/user">Login</router-link><router-link to"/user/reg" style"margin-left…

代码随想录算法训练营(二叉树总结篇)

一.二叉树的种类 1.满二叉树&#xff1a;就是说每一个非叶子节点的节点都有两个子节点。 2.完全二叉树&#xff1a;此二叉树只有最后一层可能没填满&#xff0c;并且存在的叶子节点都集中在左侧&#xff01;&#xff01;&#xff01; &#xff08;满二叉树也是完全二叉树&…

【Flutter】【基础】CustomPaint 绘画功能(一)

功能&#xff1a;CustomPaint 相当于在一个画布上面画画&#xff0c;可以自己绘制不同的颜色形状等 在各种widget 或者是插件不能满足到需求的时候&#xff0c;可以自己定义一些形状 使用实例和代码&#xff1a; CustomPaint&#xff1a; 能使你绘制的东西显示在你的ui 上面&a…

安装Tomac服务器——安装步骤以及易出现问题的解决方法

文章目录 前言 一、下载Tomcat及解压 1、选择下载版本&#xff08;本文选择tomcat 8版本为例&#xff09; 2、解压安装包 二、配置环境 1、在电脑搜索栏里面搜索环境变量即可 2、点击高级系统设置->环境变量->新建系统变量 1) 新建系统变量&#xff0c;变量名为…

nginx一般轮询、加权轮询、ip_hash等负载均衡模式配置介绍

一.负载均衡含义简介 二.nginx负载均衡配置方式 准备三台设备&#xff1a; 2.190均衡服务器&#xff0c;2.191web服务器1&#xff0c;2.160web服务器2&#xff0c;三台设备均安装nginx&#xff0c;两台web服务器均有网页内容 1.一般轮询负载均衡 &#xff08;1&#xff09…

Autoware感知02—欧氏聚类(lidar_euclidean_cluster_detect)源码解析

文章目录 引言一、点云回调函数&#xff1a;二、预处理&#xff08;1&#xff09;裁剪距离雷达过于近的点云&#xff0c;消除车身的影响&#xff08;2&#xff09;点云降采样&#xff08;体素滤波&#xff0c;默认也是不需要的&#xff09;&#xff08;3&#xff09;裁剪雷达高…

React Native 图片组件基础知识

在 React Native 中使用图片其实跟 HTML 中使用图片一样简单&#xff0c;在 React Native 中我们使用Image组件来呈现图片的内容&#xff0c;其中主要的属性有&#xff1a;source。这个属性主要是设置图片的内容&#xff0c;它可以是网络图像地址、静态资源、临时本地图像以及本…

【LeetCode75】第二十九题 删除链表的中间节点

目录 题目&#xff1a; 示例; 分析: 代码: 题目&#xff1a; 示例; 分析: 给我们一个链表&#xff0c;让我们把链表中间的节点删了。 那么最直观最基础的办法是遍历两边链表&#xff0c;第一遍拿到链表长度&#xff0c;第二次把链表中间节点删了。 这个暴力做法我没事过…

Docker查看、创建、进入容器相关的命令

1.查看、创建、进入容器的指令 用-it指令创建出来的容器&#xff0c;创建完成之后会立马进入容器。退出之后立马关闭容器。 docker run -it --namec1 centos:7 /bin/bash退出容器&#xff1a; exit查看现在正在运行的容器命令&#xff1a; docker ps查看历史容器&#xff0…

Uniapp当中使用腾讯位置路线规划插件保姆教学

首先我们在使用腾讯地图插件之前我们需要先做几点准备 1&#xff1a;我们需要在腾讯地图位置服务当中注册账号以及在控制台当中创建应用和创建key 这里在创建应用当中应用类型一定要选出行类型&#xff0c;否则后期可能会出现问题。 我们创建完应用之后&#xff0c;点击创建…

java毕业设计-智慧食堂管理系统-内容快览

首页 智慧食堂管理系统是一种可以提高食堂运营效率的管理系统。它将前端代码使用Vue实现&#xff0c;后端使用Spring Boot实现。这个系统的目的是简化食堂管理&#xff0c;提高食堂服务质量。在现代快节奏的生活中&#xff0c;人们对餐饮服务提出了更高的要求&#xff0c;食堂管…

论文复现--关于单视角动作捕捉工具箱--MMHuman3d的研究(基于Windows10和Linux18.04中配置)

分类&#xff1a;动作捕捉 github地址&#xff1a;https://github.com/open-mmlab/mmhuman3d 所需环境&#xff1a; Windows10&#xff0c;CUDA11.6&#xff0c;conda 4.13.0&#xff0c;Visual Studio 2017&#xff1b; Ubuntu18.04&#xff0c;conda22.9.0&#xff0c;CUDA11…

C语言题目的多种解法分享 2之字符串左旋和补充题

前言 有的时候&#xff0c;这个系列专栏中的解法之间并无优劣&#xff0c;只是给大家提供不同的解题思路 我决定将代码实现的过程写成注释&#xff0c;方便大家直接找到对应的函数&#xff0c;只有需要补充说明的知识才会单拿出来强调 这个系列的文章会更的比较慢&#xff0…

Kafka3.0.0版本——Broker( 退役旧节点)示例

目录 一、服务器信息二、先启动4台zookeeper&#xff0c;再启动4台kafka三、通过PrettyZoo工具验证启动的kafka是否ok四、查看4台kafka集群节点上是否存在创建的名称为news的主题五、退役旧节点5.1、执行负载均衡操作5.2、 执行停止命令5.3、再次查看kafka中的创建过的名称为ne…

React Native 列表组件基础知识

ScrollView 组件 ScrollView组件是一个容器滚动组件&#xff0c;当容器超出指定宽高时就可以进行滚动交互。 ScrollView组件是一次性渲染所有的 React 子组件&#xff0c;这在性能上是比较差的&#xff0c;所以不建议当列表特别长的时候使用此组件。 接下来列举几个常用的一…

导入示例工程出现error: failed to start ability. Error while Launching activity错误的解决办法

导入华为健康生活应用&#xff08;ArkTS&#xff09;&#xff0c;使用DevEco Studio打开&#xff0c;运行报错&#xff1a; error: failed to start ability. Error while Launching activity解决办法&#xff1a;修改module.json5里面exported的值&#xff0c;由false改为tr…

LVGL学习笔记 30 - List(列表)

目录 1. 添加文本 2. 添加按钮 3. 事件 4. 修改样式 4.1 背景色 4.2 改变项的颜色 列表是一个垂直布局的矩形&#xff0c;可以向其中添加按钮和文本。 lv_obj_t* list1 lv_list_create(lv_scr_act());lv_obj_set_size(list1, 180, 220);lv_obj_center(list1); 部件包含&…

07 - 深入浅出HashMap的设计与优化

在上一讲中提到过 Collection 接口&#xff0c;那么在 Java 容器类中&#xff0c;除了这个接口之外&#xff0c;还定义了一个很重要的 Map 接口&#xff0c;主要用来存储键值对数据。 HashMap 作为我们日常使用最频繁的容器之一&#xff0c;相信你一定不陌生了。今天我们就从 …

做外贸发布产品的最简单的方式

最近和一个朋友聊天&#xff0c;说到他朋友在开某平台的网店&#xff0c;因为抄袭某家的好评而被投诉罚款&#xff0c;而被罚款的原因是这个朋友太懒了&#xff0c;在挑选了一家店铺的好评后&#xff0c;就直接照抄不误&#xff0c;而且全部的好评语都是抄自这同一家的&#xf…

IOS开发-XCode14介绍与入门

IOS开发-XCode14介绍与入门 1. XCODE14的小吐槽2. XCODE的功能bar一览3. XCODE项目配置一览4. XCODE更改DEBUG/RELEASE模式5. XCODE单元测试 1. XCODE14的小吐槽 iOS开发工具一直有个毛病&#xff0c;就是新版本的开发工具的总会有一些奇奇怪怪的bug。比如在我的Mac-Pro&#…