P8665 [蓝桥杯 2018 省 A] 航班时间:格式问题

2024-03-16 16:04

本文主要是介绍P8665 [蓝桥杯 2018 省 A] 航班时间:格式问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:

P8665 [蓝桥杯 2018 省 A] 航班时间

哎,这道题做了很长时间还是做错了🥀

代码

#include<iostream>
#include<algorithm>
using namespace std;
int get()
{int h1,m1,s1,h2,m2,s2,day=0;scanf("%d:%d:%d %d:%d:%d",&h1,&m1,&s1,&h2,&m2,&s2);if(getchar()==' ')scanf("(+%d)",&day);return (day*86400+h2*3600+m2*60+s2)-(h1*3600+m1*60+s1);
}
int main()
{int T;scanf("%d",&T);while(T--){int ans=(get()+get())/2;printf("%02d:%02d:%02d\n",ans/3600,ans%3600/60,ans%60);}return 0;
}

注意点

为了方便计算起飞和降落之间的时间差,我们将单位都换算成秒,最终计算出的是相差的秒数,然后再经过换算得到对应的时间。

这样避免了直接将小时、分钟、秒直接相减得到负数的情况

通过判断下一个字符是否是空格来判断是否隔天

scanf("%d:%d:%d %d:%d:%d",&h1,&m1,&s1,&h2,&m2,&s2);
if(getchar()==' ')scanf("(+%d)",&day);

因为我们发现如果是隔天,紧跟正常格式输入完之后一定会有一个空格。因此我们将其作为判断标准。

飞行时间的求法:

我们将单位换算成秒之后,分别用来和去的降落时间减去起飞时间 得到的结果进行相加再/2得到的就是飞行时间。

因为题目已经假设了往返飞行时间相同,所以两次相减得到的结果应该是相同的,但是由于输入格式要求输入来回两次的起降时间,因此我们get函数不得已执行了两次,所以最后需要两数相加初二来得到答案。

当时间为一位数时,要补齐前导零。

这个可以直接利用printf输出格式来实现。

printf("%02d:%02d:%02d\n",ans/3600,ans%3600/60,ans%60);

02 表示输出的整数至少占两位,不足两位时用零填充

这次做过了一定要记住呀,很省事。

再补充一些

想再说一下scanf 

scanf函数的返回值是成功读取并赋值的项数。如果读取失败,或者在读取第一个项之前就遇到了文件结束符,scanf函数会返回EOF  (EOF并不代表0)

输入的数据与指定的格式不匹配时,scanf会停止读取,并返回已经成功读取并赋值的项数。也就是如果一个都没有成功的读取,那么返回值就是0,表示0项。

在使用scanf进行输入时,通常会忽略前导空白字符(如空格,制表符或换行符)。和cin一样


这道题写了好久好久。还是写错了😂

有问题欢迎指出,一起加油!!!!

这篇关于P8665 [蓝桥杯 2018 省 A] 航班时间:格式问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/815988

相关文章

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

SysMain服务可以关吗? 解决SysMain服务导致的高CPU使用率问题

《SysMain服务可以关吗?解决SysMain服务导致的高CPU使用率问题》SysMain服务是超级预读取,该服务会记录您打开应用程序的模式,并预先将它们加载到内存中以节省时间,但它可能占用大量... 在使用电脑的过程中,CPU使用率居高不下是许多用户都遇到过的问题,其中名为SysMain的服务往往是罪魁

MySQL按时间维度对亿级数据表进行平滑分表

《MySQL按时间维度对亿级数据表进行平滑分表》本文将以一个真实的4亿数据表分表案例为基础,详细介绍如何在不影响线上业务的情况下,完成按时间维度分表的完整过程,感兴趣的小伙伴可以了解一下... 目录引言一、为什么我们需要分表1.1 单表数据量过大的问题1.2 分表方案选型二、分表前的准备工作2.1 数据评估