0
点赞
收藏
分享

微信扫一扫

输入某年某月,判断距离天数

kiliwalk 2022-01-04 阅读 48
c语言

题目描述如下,

思路很简单,首先写一个输入年月份的代码,然后我们要注意到,闰年和平年的天数是不一样的,

闰年的二月份比平年多上一天。判断的方法就是当这个年份对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;
}

 

举报

相关推荐

0 条评论