[ccf备考]201509-2日期计算

问题描述

  给定一个年份y和一个整数d,问这一年的第d天是几月几日?
  注意闰年的2月有29天。满足下面条件之一的是闰年:
  1) 年份是4的整数倍,而且不是100的整数倍;
  2) 年份是400的整数倍。

输入格式

  输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。
  输入的第二行包含一个整数dd在1至365之间。

输出格式

  输出两行,每行一个整数,分别表示答案的月份和日期。

样例输入

2015
80

样例输出

3
21

样例输入

2000
40

样例输出

2
9

 

这个题总体来说是比较简单的,只需要先判断是否为闰年,最后根据闰年情况分为两类进行判断,然后12个月作为一个数组,判断d减去每个月后剩余天数与下一个月的比较情况即可,经过多次调试,代码已经成功AC,下面附代码:

#include<iostream>
#include<cmath>
using namespace std;
int isrn(int n){
    if((n%4==0&&n%100!=0)||n%400==0)
    return 1;
    else 
    return 0;
}
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};

int main(){
    int y,d,sum=0;
    cin>>y>>d;
    int month=1,date=1;
    if(isrn(y)==1){
        for(int i=0;i<12;i++){
        if(d-b[i]>0){
            d=abs(d-b[i]);
            month++;
        }
        if(d-b[i]==0&&i!=0){
            cout<<i+1<<endl;
            cout<<b[i];
            break;
        }
        if(d-b[i]<0&&i!=0){
            cout<<month<<endl;
            cout<<abs(d);
            break;
        }
        if(d-b[i]<=0&&i==0){
            cout<<month<<endl;
            cout<<abs(d);
            break;
        }
    }
}
    
    if(isrn(y)==0){
            for(int i=0;i<12;i++){
        if(d-a[i]>0){
            d=abs(d-a[i]);
            month++;
        }
        if(d-a[i]==0&&i!=0){
            cout<<i+1<<endl;
            cout<<a[i];
            break;
        }
        if(d-a[i]<0&&i!=0){
            cout<<month<<endl;
            cout<<abs(d);
            break;
        }
        if(d-a[i]<0&&i==0){
            cout<<month<<endl;
            cout<<abs(d);
            break;
        }
    }
}
    return 0;
}

 

如果有问题的话欢迎提出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值