计算某天是一年的第几天

大致思路
输入年月日:获取1月1号到上个月月末的天数 加上输入的日期值
注意:闰年且输入月份大于3时需考虑多加一天

year = input('year:\n')
month = input('month:\n')
day = input('day:\n')
months = (0,31,59,90,120,151,181,212,243,273,304,334) #0~12个月的天数
if 0 < month <= 12:
     sum = months[month - 1]
else:
     print('month error')
sum += day
leap = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):   #算闰年
     ryear = 1
if (ryear == 1) and (month > 2):
     sum += 1
print( 'it is the %dth day.' % sum)

闰年
公历年份是整百或整千的(也就是年份末尾至少有2个0的),用年份除以400,如果能整除,就是闰年,不能整除就是平年,
公历其他的年份,用年份除以4,如果能整除,就是闰年,不能整除就是平年,
如1900年,1900÷400=4……300 就是平年,平年2月是28天.
2000年,2000÷400=5 就是闰年,闰年2月是29天.
2002年,2002÷4=500……2就是平年
2004年,2004÷4=501 就是闰年
闰年2月是29天 平年2月是28天.

在C语言中,可以编写一段程序来计算给定日期是这一年第几天。基本思路包括以下步骤: 1. **确定是否为闰年**:判断该年份是否满足闰年条件(能被4整除但不能被100整除,或者能被400整除),以便正确设置二月份的天数。 2. **构建数组存储每月天数**:创建一个包含每个月标准天数的数组,并依据当前年份调整二月天数值。 3. **累加之前的月份天数并加上当月天数**:遍历目标日期前的所有月份数组元素并将它们相加以得出结果。 下面是一个示例代码片段展示如何实现上述功能: ```c #include <stdio.h> int isLeapYear(int year) { if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { return 1; } else{ return 0; } } int main() { int day, month, year; printf("请输入年、月、日:"); scanf("%d%d%d", &year, &month, &day); // 定义一年各个月的标准天数 int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if(isLeapYear(year)){ daysInMonth[1] = 29; // 若是润年,则将2月设成29天 } int totalDays = 0; for(int i=0;i<month - 1;i++) { totalDays += daysInMonth[i]; } totalDays += day; printf("%d-%d-%d是一年的第%d天。\n", year, month, day,totalDays); } ``` 在这个例子中我们首先询问用户输入特定的一天,然后通过函数 `isLeapYear` 判断当年是不是闰年,并相应地修改了我们的“daysInMonth”数组值。最后循环累计所有过去的月份以及本月已过的日子总数就是我们要找的答案啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mr.杰瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值