题目:用户输入年、月、日,输出该天是星期几,如果用户输入三个连续的0,则退出程序。
要求:对用户输入的数据进行校验,如小月(4、6、9、11月)天数不能大于30天,闰年二月天数不能大于29天,非闰年天数不能大于28天。
思路:统计从公元0001年1月1日到现在共有多少天,然后将天数取模7就是星期几了。
实现:统计该天是该年的第几天,然后统计0001年到该年共几天,相加就是总天数。
代码实现:
#include<iostream>
using namespace std;
int methodYear(int year) //是否是闰年
{
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
return 1;
else
return 0;
}
int method(int year, int month, int day)
{
int temp = methodYear(year) + 28; //该年二月的天数
switch(month)
{
case 1: return day;
case 2: if(methodYear(year) == 1 && day > 29 || methodYear(year) == 0 && day > 28)
return 0; //闰年不能大于29天,非闰年不能大于28天
return 31 + da