蓝桥杯之日期题

devtools/2025/2/28 15:40:58/

文章目录

    • 1.蓝桥杯必备知识点
    • 2. 题型1
    • 3.需求2

1.蓝桥杯必备知识点

蓝桥杯是一个面向全国高校计算机相关专业学生的学科竞赛,涵盖多个赛道,常见的有软件类(如 C/C++ 程序设计、Java 软件开发、Python 程序设计)和电子类(如嵌入式设计与开发、单片机设计与开发等)。以下为你分别介绍软件类和电子类省赛的必备知识点:
软件类
编程语言基础

C/C++基本语法:变量、数据类型(如整型、浮点型、字符型、指针等)、运算符、控制结构(如 if-else、for、while 循环)等。函数:函数的定义、调用、参数传递(值传递、指针传递、引用传递)。数组和字符串:数组的定义、初始化、访问,字符串的处理(如字符串的输入输出、字符串函数的使用)。结构体和联合体:结构体和联合体的定义、使用,结构体数组等。文件操作:文件的打开、读写、关闭操作。
Java基本语法:变量、数据类型、运算符、控制语句。面向对象编程:类、对象、继承、多态、封装等概念,以及类的定义、方法的使用。字符串处理:String 类、StringBuilder 类的使用。集合框架:List、Set、Map 等集合的使用,以及迭代器的遍历。异常处理:try-catch-finally 语句的使用。
Python基本语法:变量、数据类型(如列表、元组、字典、集合)、控制流语句。函数和模块:函数的定义和调用,模块的导入和使用。文件操作:文件的读写操作。面向对象编程:类和对象的创建,方法和属性的使用。

数据结构

数组:一维数组、多维数组的使用,数组的排序(如冒泡排序、快速排序)和查找(如二分查找)。
链表:单链表、双向链表的实现,链表的插入、删除、查找操作。
栈和队列:栈和队列的基本概念,栈的后进先出(LIFO)和队列的先进先出(FIFO)特性,以及栈和队列的实现和应用。
树:二叉树的遍历(前序、中序、后序遍历),二叉搜索树的基本操作。
图:图的表示(邻接矩阵、邻接表),图的遍历(深度优先搜索、广度优先搜索)。

算法

搜索算法:深度优先搜索(DFS)、广度优先搜索(BFS),常用于解决迷宫问题、路径搜索问题等。
动态规划:通过将原问题分解为相对简单的子问题,并保存子问题的解来避免重复计算,常用于解决最优子结构问题,如背包问题、最长公共子序列问题。
贪心算法:在每一步选择中都采取当前状态下的最优选择,期望通过局部最优达到全局最优,如哈夫曼编码、活动选择问题。
排序算法:除了上述提到的冒泡排序、快速排序,还需要掌握选择排序、插入排序、归并排序等排序算法的原理和实现。

数学知识

数论:质数的判断、最大公约数(GCD)和最小公倍数(LCM)的计算,以及同余定理等。
组合数学:排列组合的计算,常用于解决计数问题。

电子类
电路基础

电路元件:电阻、电容、电感等基本元件的特性和参数计算。
电路定律:欧姆定律、基尔霍夫定律(电流定律和电压定律)的应用。
电路分析方法:节点电压法、网孔电流法等电路分析方法。

单片机知识

单片机原理:单片机的基本结构、工作原理,如 CPU、存储器、I/O 接口等。
编程语言:常见的单片机编程语言为 C 语言,需要掌握单片机 C 语言的编程规范和技巧。
外设驱动:掌握单片机的各种外设驱动,如定时器、计数器、串口通信、中断系统等。

传感器与执行器

传感器:了解常见传感器的工作原理和使用方法,如温度传感器、光照传感器、加速度传感器等。
执行器:掌握执行器的控制方法,如电机驱动、继电器控制等。

PCB 设计基础

原理图设计:使用专业的 PCB 设计软件(如 Altium Designer)进行原理图的绘制。
PCB 布局布线:掌握 PCB 布局布线的基本原则和方法,避免电磁干扰等问题。

2. 题型1

在这里插入图片描述### 2.1代码

# @File: 14.星期一计数.py
# @Author: chen_song
# @Time: 2025-02-25 10:41
from datetime import datetime, timedelta# 分割日期字符串为年、月、日
def divideToThreeParts(date):years = int(date[:4])month = int(date[4:6])day = int(date[6:8])return years, month, day# 判断是否闰年
def isLeapYear(year):return (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0)# 获取1 - 12月的天数
def getDaysOfMonthAccording2Year(month, year):if month in [1, 3, 5, 7, 8, 10, 12]:return 31if month in [4, 6, 9, 11]:return 30if month == 2:return 29 if isLeapYear(year) else 28# 写一个函数实现对任意日期之间天数计算
def countDaysBetweenRandomDates(date1, date2):year1, month1, day1 = divideToThreeParts(date1)year2, month2, day2 = divideToThreeParts(date2)# 计算起始日期到当年年底的天数days1 = 0for m in range(month1, 13):if m == month1:days1 += getDaysOfMonthAccording2Year(m, year1) - day1else:days1 += getDaysOfMonthAccording2Year(m, year1)# 计算中间完整年份的天数days2 = 0for y in range(year1 + 1, year2):days2 += 366 if isLeapYear(y) else 365# 计算结束日期所在年份年初到结束日期的天数days3 = 0for m in range(1, month2):# 获取最后一年前几个月的天数days3 += getDaysOfMonthAccording2Year(m, year2)days3 += day2return days1 + days2 + days3date1 = input()
year1, month1, day1 = divideToThreeParts(date1)
dateTime1 = datetime(year1, month1, day1)# 获得第一个周一
while dateTime1.weekday() != 0:dateTime1 += timedelta(days=1)
date1 = dateTime1.strftime("%Y%m%d")date2 = input()
year2, month2, day2 = divideToThreeParts(date2)
dateTime2 = datetime(year2, month2, day2)# 检查第一个周一是否超过结束日期
if dateTime1 > dateTime2:result = 0
else:days = countDaysBetweenRandomDates(date1, date2)result = days // 7 + 1print(result)

3.需求2

在这里插入图片描述## 3.1代码

from datetime import datetime# 获取用户输入的日期
input_date = input()
a, b, c = map(int, input_date.split('/'))# 定义日期范围
start_date = datetime(1960, 1, 1)
end_date = datetime(2059, 12, 31)# 定义一个函数来判断日期是否合法
def is_valid_date(year, month, day):try:# 尝试创建日期对象,如果日期不合法会抛出 ValueError 异常date = datetime(year, month, day)return start_date <= date <= end_dateexcept ValueError:return False# 生成所有可能的日期组合  枚举
all_combinations = [(1900 + a, b, c), (2000 + a, b, c),(1900 + c, a, b), (2000 + c, a, b),(1900 + c, b, a), (2000 + c, b, a)
]# 存储合法的日期
valid_dates = []
for year, month, day in all_combinations:if is_valid_date(year, month, day):valid_dates.append(datetime(year, month, day))# 去除重复的日期并排序
unique_dates = sorted(set(valid_dates))# 输出结果
for date in unique_dates:print(date.strftime("%Y-%m-%d"))

http://www.ppmy.cn/devtools/163385.html

相关文章

【嵌入式Linux应用开发基础】网络编程(4):UDP协议

目录 一、UDP 协议概述 二、UDP 协议特点 三、UDP协议的字段格式 四、UDP协议的数据传输过程 五、嵌入式UDP编程核心API 六、UDP 在嵌入式 Linux 中的编程实现 6.1 UDP 服务器代码示例 6.2 UDP 客户端代码示例 七、UDP 协议的应用场景 八、UDP 协议的优缺点 8.1 优点…

不能初始化photoshop,因为暂存盘已满

问题&#xff1a; 当 Photoshop&#xff08;PS&#xff09;启动时提示 “不能初始化&#xff0c;因为暂存盘已满”&#xff0c;通常是由于默认暂存盘&#xff08;一般为 C 盘&#xff09;存储空间不足导致。暂存盘用于临时存放 PS 处理中的缓存文件&#xff0c;若其所在分区空…

自然语言处理入门2——神经网络

一、概述 上一篇文章《自然语言处理入门1——单词的表示和距离》我们谈到了单词的表示以及距离的相似度计算&#xff0c;从而可以预测哪个单词的出现概率最高&#xff0c;这种方法被成为基于计数的方法&#xff0c;因为从根本上都要计算单词的出现次数&#xff0c;构建共现矩阵…

【Python爬虫(83)】探秘an网数据爬取:合法合规下的技术探索

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发…

2025-VNCTF-wp

一&#xff1a;Reverse 1、HOOK Fish 思路&#xff1a; &#xff08;1&#xff09;已知hook_fish类中的strr是最终需要匹配的字符串。我们的目标是通过逆向加密流程&#xff0c;找到原始输入&#xff0c;使得经过encrypt和encode后等于strr&#xff1b;所以我们需要解码strr得…

【零基础实战】用STM32玩转DRV8313电机驱动:从原理到无人机/机器人控制

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 一、为什么选择STM32DRV8313&#xff1f;1.1 硬件组合优势 二、硬件连接全图解2.1 核心引脚连接&#xff08;图示描述…

ue学习记录part3

此为udemy课程unreal-engine-5-the-ultimate-game-developer-course第6节Moving Object With Code的学习笔记 52、setactorlocation void AItem::BeginPlay() {Super::BeginPlay();UWorld* World GetWorld();SetActorLocation(FVector(0.f, 0.f, 50.f));FVector Location G…

泛型的约束有哪几种?(C#)

目录 1 值类型约束&#xff08;where T : struct&#xff09; 2 引用类型约束&#xff08;where T : class&#xff09; 3 无参构造函数约束&#xff08;where T : new ()&#xff09; 4 基类约束&#xff08;where T : <基类名>&#xff09; 5 接口约束&#xff08…