蓝桥杯题目 计算后续日期

蓝桥杯题目 计算后续日期蓝桥杯题目计算后续日期题目描述我们经常要计算 从今天往后 N 天之后是哪一天 哪年哪月哪日 现在我们就可以编写一个程序 推算指定日期之后的第 N 天是什么日期 输入输入有多组 每组测试用例有一行 包括四个整数 分别表示年 月 日和第 N 天 输出对于每组测试用例 输入由一行组成 表示 年月日 N 天后的 的年 月 日样例输入样例输出 2012

蓝桥杯题目

计算后续日期

题目描述

我们经常要计算,从今天往后N天之后是哪一天(哪年哪月哪日)。现在我们就可以编写一个程序,推算指定日期之后的第N天是什么日期。

程序源码
#include<iostream> #include<iomanip> using namespace std; int a[2][12] = { 
    { 
    31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, { 
    31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } }; int b[2] = { 
    365,366 }; int judge(int a)//是否是闰年,是则返回1,不是则返回0 { 
    if ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0)return 1; else return 0; } //返回从1年1月1日开始(包括当天)到输入天数(不包括当天)所经历的天数 int days_1(int year, int month, int day) { 
    int sum = 0; for (int i = year; i > 1; i--) { 
    sum += b[judge(i)]; } for (int j = month; j > 1; j--) { 
    sum += a[judge(year)][j - 1]; } sum += day - 1; return sum; } //输入n(n大于0),则返回从1年1月1日(包括当天)开始经过了n天后的日期(不包括当天) void days_2(int sum, int &year, int &month, int &day) { 
    for (year = 1; sum >= b[judge(year)]; year++) { 
    sum -= b[judge(year)]; } for (month = 0; sum >= a[judge(year)][month]; month++) { 
    sum -= a[judge(year)][month]; } month++; day = sum + 1; return; } int main() { 
    int year, month, day, n; while (cin >> year >> month >> day >> n) { 
    n+= days_1(year, month, day); days_2(n, year, month, day); cout << year << "." << month << "." << day << endl; } return 0; } 
测试结果

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233008.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号