蓝桥杯_工作时长_C++

蓝桥杯_工作时长_C++

题目描述:

工作时长原题链接

题解:

解题思路:

思路:

1、注意这是一道填空题 ,所以只需要输出最后答案即可
题目分析:

输入为上下班的时间,格式为(yyyy-MM-dd HH:mm:ss)

第一条为上班时间

第二条为下班时间

第三条为上班时间

...

① 需要计算工作时长,工作时长= 所有(下班时间-上班时间)单位为秒

通过所提供的案例发现均为2022年的上班记录,计算工作时长是可将2022年作为时间基准 ,将上下班时间转换为秒。
例: 2022-01-01 12:00:05

01-01 可转换为 24 小时 ,(24+12)*60 可转换为分钟 ,(24+12)60 60可转换为 ,(24+12)6060+5 为以2022为基准的时间

② 这里需注意每个月的天数,闰年 2 月有 29 天,非闰年28天(闰年的判断能被 4 整数不能被 100 整除的是闰年,或者能被 400 整除的是闰年 )。2022为非闰年

在进行数据输入时(yyyy-MM-dd HH:mm:ss),是有一定的格式的。可采用如下形式进行输入(当读取文件末尾或者手动输入Ctrl+c 时 while 结束)

cpp 复制代码
while(scanf("%d-%d-%d %d:%d:%d",&year,&month,&day,&h,&m,&s)==6){
}

代码实现

cpp 复制代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

// 阻止在此判断闰年的类型
int year, month, day, h, m, s;

int main() {
    // days数组用来存储每个月的天数,索引从0到12(0为虚拟值)
    vector<int> days = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    vector<int> v;
    
    // 循环读取输入,格式为 "YYYY-MM-DD HH:MM:SS"
    // 只有在成功读取到6个值时,循环才会继续
    while (scanf("%d-%d-%d %d:%d:%d", &year, &month, &day, &h, &m, &s) == 6) {
        int sum = 0;
        
        // 计算输入日期之前的所有月份的天数
        for (int i = 0; i < month; i++) {
            sum += days[i]; // 将每个月的天数累加到sum中
        }
        
        // 加上当前月份的天数
        sum += day;

        // 计算已过去的秒数
        sum *= 24; // 转换为小时
        sum += h;  // 加上小时
        sum *= 60; // 转换为分钟
        sum += m;  // 加上分钟
        sum *= 60; // 转换为秒
        sum += s;  // 加上秒

        // 将计算得到的总秒数存入向量v中
        v.push_back(sum);
    }

    // 对总秒数进行排序
    sort(v.begin(), v.end());

    int ans = 0;
    
    // 计算时间间隔
    for (int i = 0; i < v.size(); i += 2) {
        ans += v[i + 1] - v[i]; // 将每对时间的差值累加到ans中
    }

    // 输出所有时间段的总秒数
    cout << ans;
    return 0;
}

蓝桥杯_工作时长_原题链接

欢迎大家和我沟通交流(✿◠‿◠)

相关推荐
零基础的修炼6 小时前
CUDA知识汇总
开发语言·c++·编辑器
欧特克_Glodon6 小时前
OpenCV计算机视觉开发入门与实践<三十八>:图像添加数字水印
c++·人工智能·opencv·计算机视觉
蒸蒸yyyyzwd6 小时前
与Redis和MySQL有关的知识
c++·求职招聘·八股
欧特克_Glodon6 小时前
OpenCV计算机视觉开发入门与实践<四十>:自动识别物体数量
c++·人工智能·opencv·计算机视觉
wuminyu6 小时前
Kafka利用sendfile与Page Cache实现高性能传输剖析
java·linux·c语言·jvm·c++
hansang_IR6 小时前
【题解】P4456 [CQOI2018] 交错序列(数学递推)
c++·算法
流浪0016 小时前
大厂 C/C++ 2023–2025 面试答案题汇总
开发语言·c++
青少儿编程课堂6 小时前
贪心算法进阶:区间调度与最少资源整合解析
c++·python·算法·贪心·信息学竞赛·区间调度
(Charon)7 小时前
【C++】 定时器入门:从定时任务到 epoll 驱动
开发语言·c++
励志不掉头发的内向程序员7 小时前
【LibreCAD 2D架构】鼠标点下的坐标为什么会被“吸”走?LibreCAD 对象捕捉系统解析
开发语言·c++·qt·学习·系统架构