题目描述如下,
思路很简单,首先写一个输入年月份的代码,然后我们要注意到,闰年和平年的天数是不一样的,
闰年的二月份比平年多上一天。判断的方法就是当这个年份对4取模余数是0并且对100取模余数是0,或者对400取模等于0的就是闰年,注意,这三个判断条件都要写上
知道是闰年和平年后,我们就可以计算天数了
#include<stdio.h>
int number(int year, int month, int day)
{
int sum = 0;
int i, j, k;
int a[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; //平年比闰年的二月份少一天
//数组a存放平年每年每月的天数
int b[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
//数组b存放闰年每年每月的天数
//判断是否为闰年
if (leap(year) == 1)
{
for (i = 0; i < month - 1; i++)
{
sum += b[i]; //累加数组前m-1个月份的天数
}
}
else
{
for (i = 0; i < month - 1; i++)
{
sum += a[i]; //累加数组前m-1个月份的天数
}
}
for (j = 2011; j < year; j++)
{
if (leap(j) == 1) //写一个自定义函数leap来判断闰年和平年
{
sum += 366;//2011年到输入的年份是闰年的加366
}
else
{
sum += 365; //2011年到输入的年份是平年的加365
}
}
sum += day; //将前面累加的结果加上日期,求出总天数
return sum;
}
int leap(int year) //求闰年和平年的自定义函数
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
return 1; //是闰年返回1
}
else
{
return 0; //不是闰年返回0
}
}
int main()
{
int year = 0;
int month = 0;
int day = 0;
int n = 0;
printf("请输入年月日\n");
scanf_s("%d%d%d", &year, &month, &day); //输入年月份
n = number(year, month, day);
printf("%d", n);
return 0;
}