蓝桥杯题目 端午节

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

蓝桥杯题目

端午节

题目描述

 2014年6月2日是端午节,也是小粽子同学的18岁生日。
 可以推算出小粽子同学出生于星期日,经历了6575天(出生当天也算1天)。
 输入一个日期,格式是YYYY-MM-DD。比如输入小粽子的生日:1996-06-02。
 输出2个数。第1个数表示此人从出生到2014年6月2日所经过的天数,
 第2个数表示这个人的出生日期是星期几。

样例输入:
1975-09-01

样例输出:
14155
1

程序源码

#include<iostream>
#include<iomanip>
using namespace std;
 
int a[2][12] = {{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};          //数组a存放闰年和非闰年每月的天数
int b[2] = {365,366};             //数组b存放闰年和非闰年每年的天数
int judge(int a)                 //判断是否是闰年,是则返回1,不是则返回0
{
	if ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0)
	return 1;
	else 
	return 0;
}

int get_days(int year, int month, int day)         //返回从1年1月1日开始(包括当天)到输入天数(不包括当天)所经历的天数
{
	int sum = 0;
	for (int i = year; i > 1; i--)
	{
		sum += b[judge(i)];
	}
	for (int j = month; j > 1; j--)
	{
		sum += a[judge(year)][j - 1];
	}
	sum += day - 1;
	return sum;
}

int main()
{
	int year, month, day, n;
	cin >> year;
	cin.ignore(1, '-');      //输入格式控制
	cin >> month;
	cin.ignore(1, '-'); 
	cin >> day;
	int x = get_days(year, month, day);
	int y = get_days(2014, 6, 2);      
	int week = (x + 1) % 7 + 1;      //用求模运算计算星期几
	cout << y - x + 1 << endl << week << endl;
	return 0;
}

输出结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43876206/article/details/93257228