九度OJ—题目1186:打印日期

来源:互联网 发布:交朋友软件哪个免费 编辑:程序博客网 时间:2024/05/20 11:33
题目描述:

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

输入:

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

输出:

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

样例输入:
2000 32000 312000 402000 602000 612001 60
样例输出:
2000-01-032000-01-312000-02-092000-02-292000-03-012001-03-01
来源:
2003-2005年华中科技大学计算机研究生机试真题
答疑:
解题遇到问题?分享解题心得?讨论本题请访问:http://t.jobdu.com/thread-7909-1-1.html


#include <stdio.h>     //判断是否为闰年int isleapyear(int year) {     if(year%4==0 && year%100!=0 || year%400==0)         return 1;     return 0; }    int main() {     int i;    int year,x;    int leap[13]={0,31,60,91,121,152,182,213,244,274,305,335,366};    int noleap[13]={0,31,59,90,120,151,181,212,243,273,304,334,365};    while(scanf("%d %d",&year,&x)!=EOF)    {        for(i=0;i<13;i++)        {            if(isleapyear(year)){                if(leap[i]>=x){                    printf("%04d-%02d-%02d\n",year,i,x-leap[i-1]);                    break;                }            }else{                if(noleap[i]>=x){                    printf("%04d-%02d-%02d\n",year,i,x-noleap[i-1]);                    break;                }        }        }    }    return 0;}  /**************************************************************    Problem: 1186    User: vhreal    Language: C    Result: Accepted    Time:10 ms    Memory:912 kb****************************************************************/


0 0