zoukankan      html  css  js  c++  java
  • 题目1186:打印日期(日期计算)

    问题来源

      http://ac.jobdu.com/problem.php?pid=1168

    问题描述

      给出年份m和这一年中的第n天,算出第n天是几月几号。

    问题分析

      我们开一个二维数组来记录每个月的天数,有人好奇,为什么是二维数组,不是一维就够了吗?这里我们考虑到二月份闰年的关系,把二维数组形式开成如下代码中的样子,第二维代表是不是闰年,方便快速查询。

      另外,判断闰年是一个经常用的东西,可以写成宏定义:#define ISYEAP(x) x%100!=0&&x%4==0||x%400==0?1:0

      还有输出格式,yyyy-mm-dd格式,用printf函数更好写:printf("%04d-%02d-%02d ",y,i,n);

    PS:普及一下printf输出格式。C语言格式化输出默认为右对齐,+表示右对齐,-表示左对齐

    printf ("%-08ld ",y)默认在后面补两个' ',不可能补0,补0就改变了数值大小,所以和0没关系
    printf ("%08ld ",y)为右对其,前补0,结果都为-0043456
    printf ("%+8ld ",y)为右对齐,前补空格,结果为**-43456 注意:此处的星号表示空格!!(因为打空格怕你看不出来。。。)

    参考代码

    //
    // Created by AlvinZH on 2017/5/2.
    // Copyright (c) AlvinZH. All rights reserved.
    //
    
    #include <iostream>
    #include <cstdio>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    //判断闰年
    #define ISYEAP(x) x%100!=0&&x%4==0||x%400==0?1:0
    
    int DayOfMonth[13][2]={
            0,0,
            31,31,
            28,29,
            31,31,
            30,30,
            31,31,
            30,30,
            31,31,
            31,31,
            30,30,
            31,31,
            30,30,
            31,31
    };
    
    int main()
    {
    
        int y;
        int n;
        while(~scanf("%d %d",&y,&n))
        {
            for(int i=1;i<=12;i++)
            {
                if(n>DayOfMonth[i][ISYEAP(y)])
                    n-=DayOfMonth[i][ISYEAP(y)];
                else
                {
                    printf("%04d-%02d-%02d
    ",y,i,n);
                    break;
                }
            }
        }
    }

    作者: AlvinZH

    出处: http://www.cnblogs.com/AlvinZH/

    本人Github:https://github.com/Pacsiy/JobDu

    本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

  • 相关阅读:
    mysql复习相关
    OpenStack三种类型的NAT转换
    openstack资料相关
    [转]Web 调试工具之 Advanced REST client
    [转]Aspose.Words.dll 将 Word 转换成 html
    [Android] 开发第十天
    [win10]遇坑指南
    [转]Explorer.exe的命令行参数
    [Android] 开发第九天
    [Android] 开发第八天
  • 原文地址:https://www.cnblogs.com/AlvinZH/p/6798375.html
Copyright © 2011-2022 走看看