201509-2 日期计算 C++实现 100分

问题描述
  给定一个年份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;
int main()
{
	int y, s;
	int flag = 0;
	cin >> y >> s;

	int m, d;

	if (y % 4 == 0 && y % 100 != 0) {
		flag = 1;
	}

	else if (y % 400 == 0) {
		flag = 1;
	}

	if (flag == 0) {
		if (s <= 31) {
			m = 1;
			d = s;
		}
		else if (s > 31 && s <= 59) {
			m = 2;
			d = s - 31;
		}
		else if (s > 59 && s <= 90) {
			m = 3;
			d = s - 59;
		}
		else if (s > 90 && s <= 120) {
			m = 4;
			d = s - 90;
		}
		else if (s > 120 && s <= 151) {
			m = 5;
			d = s - 120;
		}
		else if (s > 151 && s <= 181) {
			m = 6;
			d = s - 151;
		}
		else if (s > 181 && s <= 212) {
			m = 7;
			d = s - 181;
		}
		else if (s > 212 && s <= 243) {
			m = 8;
			d = s - 212;
		}
		else if (s > 243 && s <= 273) {
			m = 9;
			d = s - 243;
		}
		else if (s > 273 && s <= 304) {
			m = 10;
			d = s - 273;
		}
		else if (s > 304 && s <= 334) {
			m = 11;
			d = s - 304;
		}
		else if (s > 334 && s <= 365) {
			m = 12;
			d = s - 334;
		}
	}


	else {
			if (s <= 31) {
				m = 1;
				d = s;
			}
			else if (s > 31 && s <= 60) {
				m = 2;
				d = s - 31;
			}
			else if (s > 60 && s <= 91) {
				m = 3;
				d = s - 60;
			}
			else if (s > 91 && s <= 121) {
				m = 4;
				d = s - 91;
			}
			else if (s > 121 && s <= 152) {
				m = 5;
				d = s - 121;
			}
			else if (s > 152 && s <= 182) {
				m = 6;
				d = s - 182;
			}
			else if (s > 182 && s <= 213) {
				m = 7;
				d = s - 182;
			}
			else if (s > 213 && s <= 244) {
				m = 8;
				d = s - 213;
			}
			else if (s > 244 && s <= 274) {
				m = 9;
				d = s - 244;
			}
			else if (s > 274 && s <= 305) {
				m = 10;
				d = s - 274;
			}
			else if (s > 305 && s <= 335) {
				m = 11;
				d = s - 305;
			}
			else if (s > 335 && s <= 366) {
				m = 12;
				d = s - 335;
			}
		}
	
	cout << m << endl;
	cout << d << endl;

	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值