版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (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;
}