打印日期

来源:互联网 发布:软件开发团队协作 编辑:程序博客网 时间:2024/04/30 13:12
/*author:jzdate:2014 09 08*//*题目1186:打印日期时间限制:1 秒内存限制:32 兆特殊判题:否提交:4078解决:1412题目描述:给出年分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<iostream>#include<string>#include<algorithm>#include<vector>#include <iomanip>using namespace std;int isrui(int m){if ( (0==m%4)&&(0!=m%100)  || (0==m%100)&&(0==m%400)){return 1;}else{return 0;}}int month(int m,int n){if (2==n){if (isrui(m))return 29;elsereturn 28;}else if ( (1==n)||(3==n)||(5==n)||(7==n)||(8==n)||(10==n)||(12==n) ){return 31;}else {return 30;}}void date(int m,int num){int mon=0;int dnum=0;while (num>0){mon++;    dnum=month(m,mon);num-=dnum; }//cout<<m<<"-"<<mon<<"-"<<num+dnum<<endl;cout << setfill('0');cout << setw(4)<<m<<"-"<< setw(2) <<mon<< "-" << setw(2)  << num+dnum << endl;}int main(){int m,n;while (cin>>m){cin>>n;date(m,n);}return 1;}//方法2#include "stdio.h"#include "stdlib.h"int main(){        int m,n,i,temp;        int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};        while(~scanf("%d%d",&m,&n))        {                if(m%400==0||(m%4==0&&m%100!=0))                        month[1]=29;                else month[1]=28;                for(i=0,temp=n;temp>month[i];i++)                        temp-=month[i];                i++;                printf("%04d-%02d-%02d\n",m,i,temp);        }        return 0;        }

0 0
原创粉丝点击