• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > c计算闰年

c计算闰年

作者:vector 字体:[增加 减小] 来源:互联网 时间:2017-08-17

vector通过本文主要向大家介绍了闰年的计算方法c语言,c语言计算闰年,c闰年的计算方法,如何计算闰年,如何计算闰年和平年等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Problem Description 今天是2017年8月6日,农历闰六月十五。

小度独自凭栏,望着一轮圆月,发出了“今夕何夕,见此良人”的寂寞感慨。

为了排遣郁结,它决定思考一个数学问题:接下来最近的哪一年里的同一个日子,和今天的星期数一样?比如今天是8月6日,星期日。下一个也是星期日的8月6日发生在2023年。

小贴士:在公历中,能被4整除但不能被100整除,或能被400整除的年份即为闰年。  
Input 第一行为T,表示输入数据组数。

每组数据包含一个日期,格式为YYYY-MM-DD。

1 ≤ T ≤ 10000

YYYY ≥ 2017

日期一定是个合法的日期

 
Output 对每组数据输出答案年份,题目保证答案不会超过四位数。  
Sample Input

3
2017-08-06
2017-08-07
2018-01-01
 
Sample Output

2023
2023
2024


#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
bool is(int year) {
    return year%400==0||year%4==0&&year%100!=0;
}
int add(int year,int month,int day) {
    if(is(year)) {
        if(month<=2)
            return 366;
        else return 365;
    } else if(month>2) {
        return 365+is(year+1);
    } else return 365;
}
void solve() {
    char s[20];
    scanf("%s",s);
    for(int i=0; i<10; ++i)
        s[i]-='0';
    int year=s[0]*1000+s[1]*100+s[2]*10+s[3],month=s[5]*10+s[6],day=s[8]*10+s[9];
    int cnt=0;
    if(month==2&&day==29) {
        while(!cnt||cnt%7!=0) {
            year+=4;

            cnt+=365*4+1;
            if(!is(year)) {
                year+=4;
                cnt+=365*4;
            }
        }
        cout<<year<<endl;
        return;
    }
    while(!cnt||cnt%7!=0) {
        cnt+=add(year,month,day);
        year++;
    }
    cout<<year<<endl;
}
int main() {
    int n;
    scanf("%d",&n);
    while(n--)
        solve();
    return 0;
}

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • c计算闰年
  • C语言将24小时制转换为12小时制的方法

相关文章

  • 2017-05-28C语言 数据结构之链表实现代码
  • 2017-05-28C++形参与实参的区别实例解析
  • 2017-05-28linux内核select/poll,epoll实现与区别
  • 2017-05-28深入浅析STL vector用法
  • 2017-05-28基于稀疏图上的Johnson算法的详解
  • 2017-05-28浅谈C语言函数调用参数压栈的相关问题
  • 2017-05-28详解C++编程中的析构函数
  • 2017-05-28c语言尾队列tailq使用示例分享
  • 2017-05-28有关C++中随机函数rand() 和srand() 的用法详解
  • 2017-05-28linux安装mysql和使用c语言操作数据库的方法 c语言连接mysql

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Cocos2d-x中背景音乐和音效使用实例
    • 数组中求第K大数的实现方法
    • C语言kmp算法简单示例和实现原理探究
    • 关于STL中list容器的一些总结
    • 全面解析C++中的new,operator new与placement new
    • 深入N皇后问题的两个最高效算法的详解
    • C++自定义函数判断某年某月某日是这一年中第几天
    • C语言 文件操作解析详解及实例代码
    • C++中对象的常引用总结
    • 基于C++语言实现机动车违章处罚管理系统

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有