万年历编写(从公元元年算起 考虑儒略历与格里历的变换)
万年历任务: 任意输入年份,输出1月至12月的日历
格式要求:
万年历背景:没有了解年历之前会觉得不就是计算闰年,然后计算那一年第一天是星期几的问题,可是这样设计出来总是和现在的日历对不上!!于是又看了一些经验,发现问题出现在1582年,大家有兴趣可以看看手机上的年历,1852年10月4日-15日期间十天是凭空消失的。这是由于公元前45年至公元1582年10月期间,罗马使用的是儒略历,计算的方式是将一年看作12个月,每四年闰一次。但是随着时间的累积误差越来越大,于是在1582年10月4日后,开始使用格里历,也就是我们熟悉的四闰,百不闰,四百再闰了。
万年历编程思路:年历中月份是会改变的,而星期则是1~7循环,所以首先要计算出输入年份1月1日是星期几。方法是计算这一年年距离公元1年有多少天sum,然后week=(sum+5)%7(1月1日周六,这个也是有很多争议啊,复试之后再研究吧)计算出是星期几。Tips:在1582年时,记得把10月4日-15日日子跳过哦,要不然就白费了罗马教皇格里的良苦用心啦。 但是这样的结果并不对,于是还是使用了计算星期的公式啊······要注意的是这个公式只适用于1582年之后,之前还是使用上述公式啊
万年历程序:
#include <stdio.h>
int year(int n);void main()
{//4.输出万年历 (输入年份,输出1月至12月的日历)int days[]={31,28,31,30,31,30,31,31,30,31,30,31};int sum=0,x,i,j,week,num;//确定每一年的星期printf("年份:");scanf("%d",&x);if(year(x)==366) days[1]=29;for(i=1;i<=x;i++) //儒略历 4年一闰 格里历 四闰百不闰四百闰 //1582年之前 使用儒略历,并且10月5日-14日存在10天的真空期sum+= year(i);if(x<=1582)week=(sum+5)%7; //周天为0 else//计算x年1月1日星期week=(x+(x-1)/4-(x-1)/100+(x-1)/400)%7;for(i=0;i<12;i++){num=1;printf("=================%d月==================\n",i+1);printf("Sun Mon Tues Wed Thur Fri Sat\n");for(j=0;j<week;j++)printf(" "); //空6格for(j=0;j<days[i];j++){if(x==1582&&i==9&&j==4){j=13; num=15;} printf("%-6d",num++);week=(week+1)%7;if (week%7==0)printf("\n");}printf("\n\n");}}int year(int n)
{//闰年366 非闰年365//闰年 普通闰年: 能被4整除但不能被100整除 四闰 百不闰 四百再闰// 世纪闰年: 能被400整除if(n<1582)return((n%4==0)?366:365); elsereturn( (n%4==0)&&(n%100!=0)||(n%400==0)? 366:365); }
万年历结果:
万年历编写(从公元元年算起 考虑儒略历与格里历的变换)相关推荐
- 公元元年之后的天数与日期之间的相互转换 阳历日期转农历
前几天,有个同事问:知道现在距离公元元年1月1日的天数,如何计算日期?此前对闰年的概念也不是很清晰,在网上查了下闰年规则,整理出一个日期转换类,贴出来和大家分享,不足之处还请多多指教! 先说下闰年规则 ...
- R语言用户自定义函数的语法结构、编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等)、编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据)、应用自定函数
R语言用户自定义函数的语法结构.编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等).编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据).应用自定函数 ...
- 利用C#编写一个高斯正反算程序
一.代码界面展示 整个界面控件为tabControl,groupBox,label,textbox,comboBox,button,richTextBook. 二.代码运算结果展示 数据结果采用国家统 ...
- 求出公元元年到公元2022年之间的所有闰年
已知满足以下条件的年份为闰年: 1.能被4整除: 2.不能被100整除: 3.能被400整除: #include <stdio.h> 代码如下: int is_leap_year(int ...
- 利用Python编写一个高斯正反算程序
一.前言 这次的高斯正反算程序是使用的Python编写的. 环境信息是:Win10.PyCharm 2021.3.1.PySide6 6.3.1.Python 3.9.9,基于QT Designer设 ...
- 万年历编写一年c语言思,万年历C语言
满意答案 sky0candy 2016.01.13 采纳率:45% 等级:12 已帮助:3065人 // 万年历.cpp : Defines the entry point for the co ...
- 输入一个年月日,计算这一天到公元元年有多少天
#include <stdio.h> #include <stdint.h>int main(int argc,const char* argv[]) {uint16_t ye ...
- 高光谱图像分类_高光谱图像分析-分类
高光谱图像分类 初学者指南 (Beginner's Guide) This article provides detailed implementation of different classifi ...
- C语言第一行是1第二行是1和2,【C语言】第一个C语言小程序 —— 日期算法和万年历 2...
1. 上一篇我们只完成了 a. 算出某年某月某日是星期几 b. 打印出某年某月的日历 这一次我写了一个打印某一年的日历.一开始我是不打算写的,因为可以调用之前的方法,分别打印出这一年12个月的日历.但 ...
最新文章
- Centos7环境下etcd集群的搭建
- 单线程下的生产者--消费者模式详解,wait和sleep的区别
- C# 模拟 Post
- JQuery Mobile 手机显示页面偏小
- 大家心目中的这些「优质」论文,你读过几篇?| PaperDaily #01
- Hibernate Query Language(HQL)。
- unreal4怎么设置游戏模式_在Unreal4中如何连接自定义服务器
- [JEEWX问题修复] JeeWX开源版2.3几处代码修改。
- jquery div点击展开,点击收起,点击除了该div外任何地方,该div隐藏
- HTML颜色值的设置
- 虚拟摄像头之九: IMX8Q 的 camera.imx8.hal 框架详解
- 湘潭大学计算机分数线,湘潭大学录取分数线2021是多少分(附历年录取分数线)
- vs2017 项目开发 解决方案下的多个项目
- 对比Windows Phone与iOS、Android开发的不同[转]
- 基本回路系统和基本割集系统
- 2021-12-23 网工基础(十四) 链路聚合的两种模式、堆叠、集群、IP路由基础
- Hiredis快速入门
- 安装win和xp双系统 若干问题
- 复旦大学计算机科学技术学院院长姜育刚:人工智能算法治理|达观WAIC回顾
- 转载 Python 学习-Matplotlib库
热门文章
- 实验详解手工指定MPLS的LSP(Huawei设备)
- 做到这些让你逃离奴隶的束缚
- 2.电调(ESC)-XP7A刷BLHeli固件(四轴专用,更快响应)
- 【Kali_017】软件包管理synaptic
- CommVault v11新特性和战略解读
- python热图_python – 使用matplotlib中的3D数据生成热图
- 正面刚Apple Watch:Fitbit第一款真正的智能手表
- Javascript(jQuery)中绑定页面上所有按钮点击事件的几种方式
- 目前市面上量化交易软件、平台、框架的特点, 重点推荐VNPY底层仿真回测系统
- Python操作excel之openpyxl