C++类相关oj题目分享(计算日期到天数转换、日期差值、打印日期、日期累加)

这篇具有很好参考价值的文章主要介绍了C++类相关oj题目分享(计算日期到天数转换、日期差值、打印日期、日期累加)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.计算日期到天数转换

传送门

题目详情

C++类相关oj题目分享(计算日期到天数转换、日期差值、打印日期、日期累加),c语言题目分享,c++,开发语言,java,算法

代码

#include <iostream>
using namespace std;
int GetDay(int year,int month)
{
    int DayOfMonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    if(month==2&&(year%400==0||(year % 4 == 0 && year % 100 )) )
    {
        return 29;
    }
    return DayOfMonth[month];
}

int main() {
    int year;
    int month;
    int day;
    cin>>year>>month>>day;
    int sum=0;
    for(int i=1;i<month;i++)
    {
        sum+=GetDay(year, i);
    }
    cout<<sum+day;
}

思路

首先我们知道肯定是用一个数组来储存每个月的天数,更加方便。同时默认2月是28天,如果是闰年就是29。
总体的计算思路是:1月到month-1月的所有天数,加上month月的day。使用for循环能正好契合这个思路
当然这题的思路和解法非常多,我这也只是其中一个。

2.KY111 日期差值

传送门

题目详情

C++类相关oj题目分享(计算日期到天数转换、日期差值、打印日期、日期累加),c语言题目分享,c++,开发语言,java,算法

代码

int GetDay(int year, int month) {//返回一年中哪一个月的天数
    int DayOfMonth[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    if (month == 2 && (year % 400 == 0 || (year % 4 == 0 && year % 100 )) ) {
        return 29;
    }
    return DayOfMonth[month];
}

int Sum(int a, int b) {
    int max = b;
    int min = a;
    int flag = 1;
    if (a > b) {
        flag = -1;
        max = a;
        min = b;
    }
    int day1 = min % 100;
    int month1 = (min / 100) % 100;
    int year1 = min / 10000;
    int day2 = max % 100;
    int month2 = (max / 100) % 100;
    int year2 = max / 10000;

    int count = 1;
    while ((year1 < year2) || (month1 < month2) || (day1 < day2)) {
        day1++;
        if (day1 > GetDay(year1, month1)) { //如果满了当月天数
            month1++;//跳到下一个月,天数变为1号
            day1 = 1;
        }
        if (month1 == 13) { //如果满了当年月数
            year1++;//跳到下一年,月数变为1月
            month1 = 1;
        }
        count++;
    }
    return flag * count;
}

int main() {
    int a, b;
    while (cin >> a >> b) {
        cout << Sum(a, b) << endl;
    }
    return 0;
}
}

思路

  1. 首先我们要处理连续输入,之前是使用while(scanf(…)!=EOF)
  • 现在也可以,但毕竟是c++。可以用while(cin<<…)
    因为:例如上面,当使用 while(cin >> a >> b) 时,如果输入操作成功(即用户输入了两个整数),cin 的布尔值为 true,循环会继续执行。如果输入操作失败(例如遇到文件结束符。在 Windows 中是 Ctrl+Z,Linux/macOS 中是 Ctrl+D。这样程序会结束循环并终止执行),cin 的布尔值为 false,循环会终止
  1. 思路是找到二者中较小的,再进行拆分。根据只要二者不相等,day1(较小的)就++;天数满了,月满了再进行处理。每一次count++。

3.KY222 打印日期

传送门

题目详情

C++类相关oj题目分享(计算日期到天数转换、日期差值、打印日期、日期累加),c语言题目分享,c++,开发语言,java,算法

代码

#include <iostream>
using namespace std;

int main() {
    int year, sum_day;
    while (cin >> year >> sum_day) {
        // 注意 while 处理多个 case
        int DayOfMonth[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        if (year % 400 == 0 || (year % 4 == 0 && year % 100 )) 
        {
            DayOfMonth[2]++;
        }
        int month=1;
        while(sum_day>DayOfMonth[month])
        {
            sum_day-=DayOfMonth[month];
            ++month;
            if(sum_day==DayOfMonth[month])
            {
                ++month;
                sum_day=1;
                break;
            }
        }
        printf("%d-%02d-%02d",year,month,sum_day);
    }
}

4.KY258 日期累加

传送门

题目详情

C++类相关oj题目分享(计算日期到天数转换、日期差值、打印日期、日期累加),c语言题目分享,c++,开发语言,java,算法

代码

#include <cfloat>
#include <iostream>
using namespace std;
int GetDay(int year, int month) //返回一年中哪一个月的天数
{
    int DayOfMonth[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    if (month == 2 && (year % 400 == 0 || (year % 4 == 0 && year % 100 )) ) 
    {
        return 29;
    }
    return DayOfMonth[month];
}
    int main() 
    {
        int num;
        cin>>num;
        while (num--) 
        {
            int year, month, day,add_day;
            cin >> year >> month >> day>>add_day;
            while(add_day--)
            {
                ++day;
                if (day > GetDay(year, month))
                {
                    ++month;
                    day=1;
                }
              if(month==13)
               {
                  year++;
                 month=1;
               } 
             }
            printf("%d-%02d-%02d\n",year,month,day);
        }
        return 0;
    }

思路

这题大家要注意题目的输入和输出要求,我自己在这上面浪费了好多多少。


今天就到这里啦!文章来源地址https://www.toymoban.com/news/detail-806677.html

到了这里,关于C++类相关oj题目分享(计算日期到天数转换、日期差值、打印日期、日期累加)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算日期到天数的换算

    目录 1.题目概述 2.题解 思路分析 具体实现 根据输入的日期,计算是这一年的第几天。 输入描述: 输入一行,每行空格分割,分别是年,月,日 输出描述 : 输出是这一年的第几天 示例: 输入:1982 3 4 输出:63 将每个月的天数保存在一个数组中,若输入年份是闰年,则二月

    2024年02月13日
    浏览(30)
  • 【案例】js 计算日期之间的天数

    new Date(\\\'2023-03-06\\\') 作用是转换成标准时间,再进行计算的,而不是转换为字符串在进行计算,切记啊!! 代码看起来只是传值的时候不一样;而实际转换时有区别

    2024年02月06日
    浏览(34)
  • mysql 日期 计算 时间差 天数差

    第一种:TIMESTAMPDIFF函数 三个参数。第一个参数是比较的类型: FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY 、 WEEK 、 MONTH 、 QUARTER、 YEAR 几种类型。第二、三参数是时间, 后减前 : 第二种: DATEDIFF函数 两个参数。前减后。得到相差的天数。 NOW() 当前的年月日时分秒,如:2023-03-09

    2024年02月07日
    浏览(44)
  • java 计算两个日期之间相隔的天数

    在Java 8中,你可以使用 java.time 包中的 LocalDate 类和 Period 类来计算两个日期字符串之间相隔的天数。以下是一个示例代码: 在这个示例中,我们首先将日期字符串解析为 LocalDate 对象,然后使用 Period.between() 方法计算两个日期之间的时期。最后,我们使用 Period.getDays() 方法获

    2024年02月05日
    浏览(42)
  • Java计算两个日期之间的天数差

    在Java中,我们可以使用Java 8引入的 java.time 包来处理日期和时间。下面是一种方法来计算两个日期之间的天数差。 首先,我们需要导入相关的类: 然后,我们可以编写一个方法来计算日期之间的天数差: 在这个方法中,我们使用了 ChronoUnit.DAYS.between 方法来计算两个 LocalDa

    2024年02月03日
    浏览(30)
  • java计算两个日期间的天数

    1、精确到年月日 2、精确到秒,向下取值 如有问题,欢迎指正~ 如能帮到您,欢迎点赞收藏~

    2024年02月11日
    浏览(38)
  • java计算日期相差天数的4种方法

    方法1:long值相减(推荐) 方法2: 方法3: 方法4:

    2024年04月28日
    浏览(32)
  • 在线推算两个日期相差天数的计算器

     具体请前往:在线推算两个日期相差天数的计算器

    2024年02月14日
    浏览(39)
  • mysql日期函数(查询最近n(天/月/年)、计算日期之间的天数等)

    mysql日期函数 目录 mysql查询最近一个月数据 返回当前日期和时间 将字符串转变为日期 日期 d 减去 n 天后的日期 计时间差,返回 datetime_expr2 − datetime_expr1 的时间差算 查询当天数据 ADDDATE(d,n) 计算起始日期 d 加上 n 天的日期 ADDTIME(t,n) n 是一个时间表达式,时间 t 加上时间表达

    2024年02月13日
    浏览(29)
  • MySQL 计算两个日期/时间之间相差的天数、分钟数、秒数...

    MySQL 中经常遇到计算两个日期或者时间之间相差的天数、周数、小时数、分钟、秒等等,下面分享一个MySQL内置的函数:TimeStampDiff() 这个函数是MySQL本身提供的可以计算两个时间间隔的函数。 语法: 返回日期或日期时间表达式 datetime_expr1 和datetime_expr2the 之间的整数差 其中

    2024年02月14日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包