王道机试2.7 打印日期

王道机试2.7 打印日期

题目描述

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

输入描述:

输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。

输出描述:

可能有多组测试数据,对于每组数据,
按 yyyy-mm-dd的格式将输入中对应的日期打印出来。

示例1

输入

2000 3
2000 31
2000 40
2000 60
2000 61
2001 60

输出

2000-01-03
2000-01-31
2000-02-09
2000-02-29
2000-03-01
2001-03-01

#include <stdio.h>
int day[2][13] = {
    {0,31,28,31,30,31,30,31,31,30,31,30,31},
    {0,31,29,31,30,31,30,31,31,30,31,30,31}
};
bool IsLeapYear(int year) {
    return (year % 100 != 0 && year % 4 == 0) || (year % 400 == 0);
}

int main(){
    int year, number;
    int mouth,d;
    while (scanf("%d%d", &year, &number) != EOF) {
        int row = IsLeapYear(year);
        mouth = 0; //初始化月
        while (number > day[row][mouth]) { //确定月
            number -= day[row][mouth];
            mouth++;
        }
        d = number;                       //确定日
        printf("%04d-%02d-%02d\n", year, mouth, d);
    }
    return 0;
}

注意输出格式

%2d表示输出场宽为2的整数,超过2位按实际数据输出,不够2位右对齐输出。
%02d表示输出场宽为2的整数,超过2位按实际数据输出,不够2位前置补0.
%5.2f表示输出场宽为5的浮点数,其中小数点后有2位,不够5位右对齐输出。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页