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ÿ…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
