Codeup cementerio - Problema C: Fecha de impresión

título Descripción

M yn año determinado día del año, el día n calcula unos meses unos pocos números.

entrada

De entrada comprende dos números enteros y (1 <= y <= 3,000), n (1 <= n <= 366).

exportación

Puede ser múltiples conjuntos de datos de prueba para cada conjunto de datos, de acuerdo con el formato aaaa-mm-dd correspondiente a la fecha de impresión de entrada.

entrada de la muestra

60 2013 
2012 300 
2011 350 
el año 2000 211

Ejemplo de salida

2013-03-01 
26.10.2012 
2011-12-16 
07/29/2000
#include <stdio.h>

int isLeapyear(int year)   //判断是否是闰年
{
    if((year%4==0&&year%100!=0)||(year%400==0))
        return 1;
    else
        return 0;
}
int main()
{
    //month存储天数,一维代表平年,二维代表闰年
    int month[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 year,n,i;
    while(scanf("%d %d",&year,&n)!=EOF)
    {
        int sum=0;
        for(i=1; i<13; i++)  //从1月开始加,直到天数大于等于n
        {
            sum+=month[i][isLeapyear(year)];
            if(sum>=n)
                break;
        }
        sum-=month[i][isLeapyear(year)];   //减去最后一个月的天数,以便求日期
        printf("%04d-%02d-%02d\n",year,i,n-sum);
    }
    return 0;
}

El resultado:

Publicados 462 artículos originales · ganado elogios 55 · vistas 320 000 +

Supongo que te gusta

Origin blog.csdn.net/LY_624/article/details/88780630
Recomendado
Clasificación