WuMian233 发表于 2024-11-12 16:17

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

感觉口算也不是很慢啊!!!!

Hakuryu 发表于 2024-11-12 17:17

嘶,这个,我先看看吧

WuMian233 发表于 2024-11-12 17:26

宁致远 发表于 2024-11-12 17:09
感觉口算也不是很慢啊!!!!

大一新生,刚学算法啥的;www

宁致远 发表于 2024-11-12 17:29

WuMian233 发表于 2024-11-12 17:26
大一新生,刚学算法啥的

蛮好蛮好!!! 祝越来越精通!!!!

miaopan 发表于 2024-11-12 18:30

WuMian233 发表于 2024-11-12 17:26
大一新生,刚学算法啥的

加油加油

你好,再见 发表于 2024-11-12 18:49

哈哈我看到这个标题就猜到是蓝桥的题目

Ty007 发表于 2024-11-12 19:35

人生苦短……
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}天")

89684828 发表于 2024-11-12 20:00

Ty007 发表于 2024-11-12 19:35
人生苦短……
from datetime import date



举一反三,支持一下!

哥哥的肥皂 发表于 2024-11-12 20:28

Ty007 发表于 2024-11-12 19:35
人生苦短……
from datetime import date



果然是Python的名言,人生苦短……
页: [1] 2
查看完整版本: C语言代码段:计算一天是本年的第几天