ccf150902-日期计算

题目

问题描述
  给定一个年份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

思路

这个题应该是C++入门经典题了,先判断闰年还是平年,然后构建每个年份的月份数组,依次减去就好了。

题解

#include<iostream>
using namespace std;

int isRun(int year){//是闰年返回1 
    if(year%4==0 && year%100!=0){
        return 1;
    }
    if(year%400==0){
        return 1;
    }
    return 0;
}

int main(){
    int monthP[]={31,28,31,30,31,30,31,31,30,31,30,31};
    int monthR[]={31,29,31,30,31,30,31,31,30,31,30,31};
    int year;
    int day;
    scanf("%d %d",&year,&day);
    int month=1;
    if(isRun(year)==1){
        for(int i=0;i<12;i++){
            if(day-monthR[i]>0){
                month++;
                day=day-monthR[i];    
            }
            else{
                break;
            }
        }
    }        

    if(isRun(year)==0){
        for(int i=0;i<12;i++){
            if(day-monthP[i]>0){
                month++;
                day=day-monthP[i];    
            }
            else{
                break;
            }
        }            
    }    
    printf("%d\n",month);
    printf("%d\n",day);
    return 0;
} 

猜你喜欢

转载自www.cnblogs.com/lyeeer/p/11504781.html