吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 299|回复: 18
上一主题 下一主题
收起左侧

[学习记录] C语言代码段:计算一天是本年的第几天

[复制链接]
跳转到指定楼层
楼主
WuMian233 发表于 2024-11-12 16:17 回帖奖励
代码段名:计算一天是本年的第几天

新人报道,刚进入计算机的世界。就用最近学的一个代码段作为在吾爱论坛发的第一个帖子吧


#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
感觉口算也不是很慢啊!!!!
3#
Hakuryu 发表于 2024-11-12 17:17
4#
 楼主| WuMian233 发表于 2024-11-12 17:26 |楼主
5#
宁致远 发表于 2024-11-12 17:29
WuMian233 发表于 2024-11-12 17:26
大一新生,刚学算法啥的

蛮好蛮好!!! 祝越来越精通!!!!
6#
miaopan 发表于 2024-11-12 18:30
WuMian233 发表于 2024-11-12 17:26
大一新生,刚学算法啥的

加油加油
7#
你好,再见 发表于 2024-11-12 18:49
哈哈我看到这个标题就猜到是蓝桥的题目
8#
Ty007 发表于 2024-11-12 19:35
人生苦短……
[Python] 纯文本查看 复制代码
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}天")
9#
89684828 发表于 2024-11-12 20:00
Ty007 发表于 2024-11-12 19:35
人生苦短……
[mw_shl_code=python,true]from datetime import date

举一反三,支持一下!
10#
哥哥的肥皂 发表于 2024-11-12 20:28
Ty007 发表于 2024-11-12 19:35
人生苦短……
[mw_shl_code=python,true]from datetime import date

果然是Python的名言,人生苦短……
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表