日期计算

来源:互联网 发布:收音机在线收听软件 编辑:程序博客网 时间:2024/06/14 11:55
问题描述
  给定一个年份y和一个整数d,问这一年的第d天是几月几日?
  注意闰年的2月有29天。满足下面条件之一的是闰年:
  1) 年份是4的整数倍,而且不是100的整数倍;
  2) 年份是400的整数倍。
输入格式
  输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。

  输入的第二行包含一个整数d,d在1至365之间。
输出格式
  输出两行,每行一个整数,分别表示答案的月份和日期。
样例输入
2015
80
样例输出
3
21
样例输入
2000
40
样例输出
         2
         9
#include <iostream>using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */bool runnian(int y){  if((y%400==0) || ((y%4==0)&&(y%100!=0)))  return true;  else  return false;}void fun(int y,int x){   int flag = 0;   int m=0;   int n=0;       if(runnian(y))   flag = 1;  //标志位置一        if(x<=31)       //写成if(0<x<=31)不能这样写!!!  {m=1;n=x;}else if(x<=59+flag)    {   m=2;   n=x-31;}else if(x<=90+flag){   m=3;   n=x-59-flag;}    else if(x<=120+flag){   m=4;   n=x-90-flag;}    else if(x<=151+flag){   m=5;   n=x-120-flag;}    else if(x<=181+flag){   m=6;   n=x-151-flag;}    else if(x<=212){   m=7;   n=x-181-flag;}    else if(x<=243+flag){   m=8;   n=x-212-flag;}    else if(x<=273+flag){   m=9;   n=x-243-flag;}    else if(x<=304+flag){   m=10;   n=x-273-flag;}    else if(x<=334+flag){   m=11;   n=x-304-flag;}    else if(x<=365+flag){   m=12;   n=x-334-flag;}cout<<m<<endl;cout<<n<<endl; }int main(int argc, char** argv) {int i;int j;cin >> i >> j;fun(i,j);return 0;}


0 0
原创粉丝点击