C语言代码段:计算一天是本年的第几天
代码段名:计算一天是本年的第几天新人报道,刚进入计算机的世界。就用最近学的一个代码段作为在吾爱论坛发的第一个帖子吧
```
#include <stdio.h>
int main()
{
int nian,yue,ri;
int days=0;
printf("请输入年月日\n");
scanf("%d",&nian);
scanf("%d",&yue);
scanf("%d",&ri);
int ma=0; //日期码
ma=ma+nian*10000;
ma=ma+yue*100;
ma=ma+ri; //把输入的日期转换成日期码
int ma1=101;
ma1=ma1+nian*10000; //设置一个新的日期码,然后设置成输入的日期码的当年的第一天
int nian1;
int yue1,ri1; //这三个变量为蓝桥杯算法服务
//printf("ma=%d,ma1=%d",ma,ma1);
for(ma1;ma1<=ma;ma1++) //摘抄蓝桥杯艺术与篮球的计算日期的算法。蓝桥杯的日期算法把日期变成可视化编号,再排除不符合日期规则的编号
{
nian1=ma1/10000;
yue1=ma1/100%100;
ri1=ma1%100;
if(yue1==0 || yue1>12 || ri1==0) //先排除超过月份和日期正常可能范围的离谱数
{
continue;
}
if(yue1==2)
{
if(nian1%4==0 && nian1%100!=0 || nian1%400==0) //设计特殊的二月份。二月份分平年和闰年
{
if(ri1>29)
{
continue;
}
}
else
{
if(ri1>28)
continue;
}
}
else if(yue1==1 || yue1==3 || yue1==5 || yue1==7 || yue1==8 || yue1==10 || yue1==12) //设计大月
{
if(ri1>31)
{
continue;
}
}
else if(yue1==4 || yue1==6 || yue1==9 || yue1==11) //设计小月
{
if(ri1>30)
{
continue;
}
}
days++; //通过了上面一堆if的安检,说明是个符合规则的日期数,天数总数自增1.然后再来一个日期码,直到和输入的日期码一样为止。
}
printf("第%d天",days);
return 0;
}
``` 感觉口算也不是很慢啊!!!! 嘶,这个,我先看看吧 宁致远 发表于 2024-11-12 17:09
感觉口算也不是很慢啊!!!!
大一新生,刚学算法啥的;www WuMian233 发表于 2024-11-12 17:26
大一新生,刚学算法啥的
蛮好蛮好!!! 祝越来越精通!!!! WuMian233 发表于 2024-11-12 17:26
大一新生,刚学算法啥的
加油加油 哈哈我看到这个标题就猜到是蓝桥的题目 人生苦短……
from datetime import date
def calculate_days_since_year_start(year, month, day):
# 创建给定日期的date对象
given_date = date(year, month, day)
# 创建同一年1月1日的date对象
start_of_year = date(year, 1, 1)
# 计算两个日期之间的差值,以天为单位
delta = given_date - start_of_year
# 返回天数
return delta.days + 1# 加1是因为包含起始日
# 主程序
if __name__ == "__main__":
# 输入年月日
year = int(input("请输入年份: "))
month = int(input("请输入月份: "))
day = int(input("请输入日期: "))
# 调用函数并打印结果
days = calculate_days_since_year_start(year, month, day)
print(f"这是该年的第{days}天") Ty007 发表于 2024-11-12 19:35
人生苦短……
from datetime import date
举一反三,支持一下! Ty007 发表于 2024-11-12 19:35
人生苦短……
from datetime import date
果然是Python的名言,人生苦短……
页:
[1]
2