3.11笔记2
目前使用的格里高利历闰年的规则如下:
- 公元年分非4的倍数,为平年。
- 公元年分为4的倍数但非100的倍数,为闰年。
- 公元年分为100的倍数但非400的倍数,为平年。
- 公元年分为400的倍数为闰年。
请用一个表达式 (不能添加括号) 判断某一年是否为闰年。
bool isLeapYear(int year) {return year % 400 == 0 || year % 4 == 0 && year % 100 != 0;
}
输入某一天的年月日,输出下一天的年月日。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdbool.h>int DaysOfMonth[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool isLeapYear(int year);int main(void) {int year, month, day;printf("Please enter year, month and day: ");scanf("%d%d%d", &year, &month, &day);day++;if (isLeapYear(year)) {DaysOfMonth[2]++;}if (day > DaysOfMonth[month]) {day = 1;month++;}if (month > 12) {month = 1;year++;}printf("Next day is: %d/%d/%d\n", year, month, day);return 0;
}bool isLeapYear(int year) {return year % 400 == 0 || year % 4 == 0 && year % 100 != 0;
}
输入某两天的年月日,输出这两天的相距多少天。
int distance(int year1, int month1, int day1, int year2, int month2, int day2) {int days = 0;// 计算year1年份的天数days += DaysOfMonth[month1] - day1;if (isLeapYear(year1) && month1 == 2) {days++;}for (int i = month1 + 1; i <= 12; i++) {days += DaysOfMonth[i];}if (isLeapYear(year1) && month1 == 1) {days++;}// 计算中间的年份的天数for (int i = year1 + 1; i < year2; i++) {days += 365;if (isLeapYear(i)) {days++;}}// 计算year2年份的天数for (int i = 1; i < month2; i++) {days += DaysOfMonth[i];}if (isLeapYear(year2) && month2 > 2) {days++;}days += day2;// 如果 year1 == year2, 则多算了一整年的天数。if (year1 == year2) {days -= 365;if (isLeapYear(year1)) {days--;}}return days;
}
(d) 已知1970年1月1日是星期四,输入之后的某一天的年月日,判断它是星期几?
#include <stdio.h>int is_leap_year(int year) {return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
}int get_day_of_week(int year, int month, int day) {int days_per_month[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };int days = 0;for (int y = 1970; y < year; y++) {days += is_leap_year(y) ? 366 : 365;}for (int m = 1; m < month; m++) {days += days_per_month[m];if (m == 2 && is_leap_year(year)) {days++; // 闰年的2月多加一天}}days += day - 1; // 减去1是因为我们从1970年1月1日开始计算的return (days + 4) % 7; // 1970年1月1日是星期四,所以加上4再对7取模
}int main() {int year, month, day;printf("请输入年月日(格式:yyyy mm dd):");scanf("%d %d %d", &year, &month, &day);int day_of_week = get_day_of_week(year, month, day);switch (day_of_week) {case 0: printf("星期四\n"); break;case 1: printf("星期五\n"); break;case 2: printf("星期六\n"); break;case 3: printf("星期日\n"); break;case 4: printf("星期一\n"); break;case 5: printf("星期二\n"); break;case 6: printf("星期三\n"); break;}return 0;
}
输入1970年之后任意一年的年份,输出该年的年历。对话如下:
输入:
Please input the year whose calendear you want to know?
2004
输出:
|=====================The Calendar of Year 2004====================|
: 1 SUN MON TUE WED THU FRI SAT 7 SUN MON TUE WED THU FRI SAT :
: 1 2 3 1 2 3 :
: 4 5 6 7 8 9 10 4 5 6 7 8 9 10 :
: 11 12 13 14 15 16 17 11 12 13 14 15 16 17 :
: 18 19 20 21 22 23 24 18 19 20 21 22 23 24 :
: 25 26 27 28 29 30 31 25 26 27 28 29 30 31 :
: 2 SUN MON TUE WED THU FRI SAT 8 SUN MON TUE WED THU FRI SAT :
: 1 2 3 4 5 6 7 1 2 3 4 5 6 7 :
: 8 9 10 11 12 13 14 8 9 10 11 12 13 14 :
: 15 16 17 18 19 20 21 15 16 17 18 19 20 21 :
: 22 23 24 25 26 27 28 22 23 24 25 26 27 28 :
: 29 29 30 31 :
: 3 SUN MON TUE WED THU FRI SAT 9 SUN MON TUE WED THU FRI SAT :
: 1 2 3 4 5 6 1 2 3 4 :
: 7 8 9 10 11 12 13 5 6 7 8 9 10 11 :
: 14 15 16 17 18 19 20 12 13 14 15 16 17 18 :
: 21 22 23 24 25 26 27 19 20 21 22 23 24 25 :
: 28 29 30 31 26 27 28 29 30 :
: 4 SUN MON TUE WED THU FRI SAT 10 SUN MON TUE WED THU FRI SAT :
: 1 2 3 1 2 :
: 4 5 6 7 8 9 10 3 4 5 6 7 8 9 :
: 11 12 13 14 15 16 17 10 11 12 13 14 15 16 :
: 18 19 20 21 22 23 24 17 18 19 20 21 22 23 :
: 25 26 27 28 29 30 24 25 26 27 28 29 30 :
: 31 :
: 5 SUN MON TUE WED THU FRI SAT 11 SUN MON TUE WED THU FRI SAT :
: 1 1 2 3 4 5 6 :
: 2 3 4 5 6 7 8 7 8 9 10 11 12 13 :
: 9 10 11 12 13 14 15 14 15 16 17 18 19 20 :
: 16 17 18 19 20 21 22 21 22 23 24 25 26 27 :
: 23 24 25 26 27 28 29 28 29 30 :
: 30 31 :
: 6 SUN MON TUE WED THU FRI SAT 12 SUN MON TUE WED THU FRI SAT :
: 1 2 3 4 5 1 2 3 4 :
: 6 7 8 9 10 11 12 5 6 7 8 9 10 11 :
: 13 14 15 16 17 18 19 12 13 14 15 16 17 18 :
: 20 21 22 23 24 25 26 19 20 21 22 23 24 25 :
: 27 28 29 30 26 27 28 29 30 31 :
|==================================================================|
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdbool.h>int DaysOfMonth[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
const char* DayOfWeek[] = { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };bool isLeapYear(int year);
int distance(int year1, int month1, int day1, int year2, int month2, int day2);
int weekday(int year, int month, int day);
void printCalendar(int year);int main(void) {int year;printf("Please input the year whose calendear you want to know?\n");scanf("%d", &year);printCalendar(year);return 0;
}bool isLeapYear(int year) {return year % 400 == 0 || year % 4 == 0 && year % 100 != 0;
}int weekday(int year, int month, int day) {int days = distance(1970, 1, 1, year, month, day);return (4 + days) % 7;
}int distance(int year1, int month1, int day1, int year2, int month2, int day2) {int days = 0;// 计算year1年份的天数days += DaysOfMonth[month1] - day1;if (isLeapYear(year1) && month1 == 2) {days++;}for (int i = month1 + 1; i <= 12; i++) {days += DaysOfMonth[i];}if (isLeapYear(year1) && month1 == 1) {days++;}// 计算中间的年份的天数for (int i = year1 + 1; i < year2; i++) {days += 365;if (isLeapYear(i)) {days++;}}// 计算year2年份的天数for (int i = 1; i < month2; i++) {days += DaysOfMonth[i];}if (isLeapYear(year2) && month2 > 2) {days++;}days += day2;// 如果 year1 == year2, 则多算了一整年的天数。if (year1 == year2) {days -= 365;if (isLeapYear(year1)) {days--;}}return days;
}void printCalendar(int year) {if (isLeapYear(year)) {DaysOfMonth[2]++;}printf("|=====================The Calendar of Year %d====================|\n", year);for (int i = 1; i <= 6; i++) {printf(": %2d SUN MON TUE WED THU FRI SAT %2d SUN MON TUE WED THU FRI SAT :\n", i, i + 6);// 打印每个月的第一行printf(": ");int wd1 = weekday(year, i, 1);int day1 = 1;for (int j = 0; j < wd1; j++) {printf(" ");}while (wd1 != 0 || day1 == 1) {printf("%4d", day1++);wd1 = (wd1 + 1) % 7;}printf(" ");int wd2 = weekday(year, i + 6, 1);int day2 = 1;for (int j = 0; j < wd2; j++) {printf(" ");}while (wd2 != 0 || day2 == 1) {printf("%4d", day2++);wd2 = (wd2 + 1) % 7;}printf(" :\n");// 打印每个月的剩余行while (day1 <= DaysOfMonth[i] || day2 <= DaysOfMonth[i + 6]) {printf(": ");int d1 = DaysOfMonth[i] - day1 + 1;if (d1 <= 0) {printf(" ");} else if (d1 < 7) {for (int k = 1; k <= d1; k++) {printf("%4d", day1++);}for (int k = 1; k <= 7 - d1; k++) {printf(" ");}} else {for (int k = 1; k <= 7; k++) {printf("%4d", day1++);}}printf(" ");int d2 = DaysOfMonth[i + 6] - day2 + 1;if (d2 <= 0) {printf(" ");} else if (d2 < 7) {for (int k = 1; k <= d2; k++) {printf("%4d", day2++);}for (int k = 1; k <= 7 - d2; k++) {printf(" ");}} else {for (int k = 1; k <= 7; k++) {printf("%4d", day2++);}}printf(" :\n");}}
}
相关文章:
3.11笔记2
目前使用的格里高利历闰年的规则如下: 公元年分非4的倍数,为平年。公元年分为4的倍数但非100的倍数,为闰年。公元年分为100的倍数但非400的倍数,为平年。公元年分为400的倍数为闰年。 请用一个表达式 (不能添加括号) 判断某一年…...
web服务器基础
目录 web服务器简介 (1)什么是www (2)网址及HTTP简介 (3)http协议请求的工作流程 主配置文件内的参数 目录标签 缺点 虚拟主机vhosts 示例的格式如下 实例 多IP实现多网页 修改监听端口号 hosts文件及域名解析 修改hosts文件内缓存格式 实现效果 实现多域名解析IP地址 在linux…...
矢量图片转换软件Vector Magic mac中文版功能特色
Vector Magic mac中文版是一款非常流行的矢量图片转换软件,它的功能特色主要体现在以下几个方面: 首先,Vector Magic mac中文版拥有出色的矢量转换能力。它采用世界上最好的全彩色自动描摹器,能够将JPG、PNG、BMP和GIF等位图图像…...
Window部署Oracle并实现公网环境远程访问本地数据库
文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle,是甲骨文公司的一款关系…...
灵魂指针,教给(三)
欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看,已成习惯 创作不易,多多支持! 目录 一、 字符指针变量 二、数组指针变量 2.1 数组指针变量是什么 2.2 数组指针变量如何初始化 三、二维数组传参本质 四、函数…...
纯手工搭建一个springboot maven项目
前言:idea社区版无法自动搭建项目,手动搭建的经验分享如下: 1 包结构 参考下图: 2 项目结构 3 maven依赖 具体的项目包结构如下图: 依据这个项目包结构配置一个springboot 的 pom依赖: <?xml ve…...
【Java】使用`LinkedList`类来实现一个队列,并通过继承`AbstractQueue`或者实现`Queue`接口来实现自定义队列
使用LinkedList类来实现一个队列,并通过继承AbstractQueue或者实现Queue接口来实现自定义队列。 以下是一个简单的示例,其中队列的大小与另一个List的容量保持一致: import java.util.LinkedList; import java.util.List; import java.util…...
ChatGPT消息发不出去了?我找到解决方案了
现象 今天忽然发现 ChatGPT无法发送消息,能查看历史对话,但是无法发送消息。 猜测原因 出现这个问题的各位,应该都是点击登录后顶部弹窗邀请[加入多语言 alapha 测试]了,并且语言选择了中文,抓包看到ab.chatgpt.com…...
《量子计算:下一个大风口,还是一个热炒概念?》
引言 量子计算,作为一项颠覆性的技术,一直以来备受关注。它被认为是未来计算领域的一次革命,可能改变我们对计算能力和数据处理的理解。然而,随着技术的不断进步和商业应用的探索,人们开始思考,量子计算到底是一个即将到来的大风口,还是一个被过度炒作的概念? 量子计…...
在Ubuntu中如何基于conda安装jupyterlab
在Ubuntu中如何创建ipykernel 可以用下面命令完成 conda create -n newenv python3.8conda activate enwenvconda install ipykernel5.1.4conda install ipython_genutilsipython -m ipykernel install --user --namepython3 --display-name Python3conda install -c conda-fo…...
Unity 中的 PlayFab 入门
要开始在 Unity 中使用 PlayFab,你只需执行以下两个简单步骤即可。第一步是设置 PlayFab 帐户。第二步是通过安装 Unity 编辑器扩展将其连接到 Unity。或者,你也可以下载 PlayFab SDK 并在没有扩展的情况下进行配置。 设置你的 PlayFab 帐户 访问 PlayFab 的网站并创建你的…...
常见排序算法(C++)
评判一个排序算法时除了时间复杂度和空间复杂度之外还要考虑对cache的捕获效果如何,cache友好的排序算法应该对数据的访问相对集中,快速排序相较于堆排序优点就是在于对cache的捕获效果好。 堆排序 时间复杂度:O(n log n …...
多线程编程互斥锁mutex的创建
在Linux下的多线程编程中,互斥锁(mutex)的创建主要有两种方式:静态分配和动态分配。这两种方式的主要区别在于互斥锁的生命周期和初始化方式。 静态分配(静态方式) 静态分配方式是在程序编译时就已经确定互…...
在 SpringBoot3 中使用 Mybatis-Plus 报错
在 SpringBoot3 中使用 Mybatis-Plus 报错 Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required Caused by: java.lang.IllegalArgumentException: Property sqlSessionFactory or sqlSessionTemplate are requiredat org.springframework.util.Assert.no…...
【libwebrtc】基于m114的构建
libwebrtc A C++ wrapper for binary release, mainly used for flutter-webrtc desktop (windows, linux, embedded).是 基于m114版本的webrtc 最新(20240309 ) 的是m122了。官方给出的构建过程 .gclient 文件 solutions = [{"name" : src,"url...
ansible-playbook的角色(role)
1前言 角色目录如下(分别为httpd角色和nginx角色) handlers/ :至少应该包含一个名为 main.yml 的文件; 其它的文件需要在此文件中通过include 进行包含 vars/ :定义变量,至少应该包含一个名为 main.yml 的…...
SNR = 6.02N + 1.76dB 公式推导
简介 接触ADC或DAC时您一定会碰到这个经常被引用的公式,用于计算转换器理论信噪比 (SNR)。与其盲目地相信表象,不如从根本上了解其来源,因为该公式蕴含着一些微妙之 处,如果不深入探究,可能导致对数据手册技术规格和转…...
归并排序 刷题笔记
归并排序的写法 归并排序 分治双指针 1.定义一个mid if(l>r)return ; 2.分治 sort(q,l,mid); sort(q,mid1,r); 3. 双指针 int il,jmid,k0; 将双序列扫入 缓存数组 条件 while(i<mid&&j<r) 两个数列比较大小 小的一方 进入缓存数组 4. 扫尾 while(…...
字节一面:TCP 和 UDP 可以使用同一个端口吗?
数据包是计算机网络通信的核心,包含头部和数据负载。TCP和UDP协议在传输层使用端口号区分服务和应用。操作系统通过IP头部中的协议字段和端口号来管理网络流量,确保TCP和UDP流量即使共用端口号也不会相互干扰。 在现代计算机网络中,数据传输…...
java guide 八股
Java语言特点 简单易学、面向对象(继承、封装、多态)、平台无关性(Java虚拟机jvm)、支持多线程、可靠、安全、高效、支持网络编程、编译与解释共存 JVM:Java虚拟机(跨平台的关键) JREÿ…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践
前言:本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中,跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南,你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案,并结合内网…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
