编程序实现:输入任意一个日期的年、月、日的值,求出从公元1年1月1日到该日期前一年的年末总共有多少天,到该日期前一个月的月末总共有多少天,到这一天总共有多少天。假定从公元第一天开始,就实施格里高利历法。格里高利历法的置闰规则是400年97闰,也可以概括为:四闰百不闰,四百闰。
输入格式:
输入三个代表年、月、日的正整数,以空格分隔。
输出格式:
输出三个总天数,数据之间以换行符分隔,最后换行。
输入样例:
2012 3 29
输出样例:
734502
734562
734591
闰年的判断方法: 公历纪年法中,能被4整除的大多是闰年,但能被100整除而不能被400整除的年份不是闰年
#include<stdio.h>
int diagnosis(int number);
int main()
{
int date[10];
int i, j, count = 0;
int sum1, sum2, sum3;
for (i = 0;i < 3;i++)
scanf_s("%d",&date[i]);
//写年——至上一年年末的天数
for (j = 1;j <date[0];j++)
{
//查出闰年的个数
if (diagnosis(j))
count++;
}
sum1 = 366 * count + 365 * (date[0] - 1 - count);
printf("%d\n", sum1);
//写月——至上一个月月末的天数
if (diagnosis(date[0]))
{
switch (date[1])//该年为闰年,至上一月的天数
{
case 1:sum2 = sum1;printf("%d\n", sum2);break;
case 2:sum2 = sum1 + 31;printf("%d\n", sum2);break;
case 3:sum2 = sum1 + 60;printf("%d\n", sum2);break;
case 4:sum2 = sum1 + 91;printf("%d\n", sum2);break;
case 5:sum2 = sum1 + 121;printf("%d\n", sum2);break;
case 6:sum2 = sum1 + 152;printf("%d\n", sum2);break;
case 7:sum2 = sum1 + 182;printf("%d\n", sum2);break;
case 8:sum2 = sum1 + 213;printf("%d\n", sum2);break;
case 9:sum2 = sum1 + 244;printf("%d\n", sum2);break;
case 10:sum2 = sum1 + 274;printf("%d\n", sum2);break;
case 11:sum2 = sum1 + 305;printf("%d\n", sum2);break;
case 12:sum2 = sum1 + 335;printf("%d\n", sum2);break;
}
}
else
{
switch (date[1])//该年为平年,至上一月的天数
{
case 1:sum2 = sum1;printf("%d\n", sum2);break;
case 2:sum2 = sum1 + 31;printf("%d\n", sum2);break;
case 3:sum2 = sum1 + 59;printf("%d\n", sum2);break;
case 4:sum2 = sum1 + 90;printf("%d\n", sum2);break;
case 5:sum2 = sum1 + 120;printf("%d\n", sum2);break;
case 6:sum2 = sum1 + 151;printf("%d\n", sum2);break;
case 7:sum2 = sum1 + 181;printf("%d\n", sum2);break;
case 8:sum2 = sum1 + 212;printf("%d\n", sum2);break;
case 9:sum2 = sum1 + 243;printf("%d\n", sum2);break;
case 10:sum2 = sum1 + 273;printf("%d\n", sum2);break;
case 11:sum2 = sum1 + 304;printf("%d\n", sum2);break;
case 12:sum2 = sum1 + 334;printf("%d\n", sum2);break;
}
}
//写天——至该天的天数
sum3 = sum2 + date[2];
printf("%d", sum3);
return 0;
}
//判断闰年的函数
int diagnosis(int number)
{
int flag = 0;
if (((number % 4 == 0) && (number % 100 != 0)) || number % 400 == 0)
flag = 1;
return flag;
}