一步一步详解高斯日记

这是有一年的蓝桥杯的题目,感觉挺有趣的
意思就是高斯有个习惯,记日期的时候喜欢只用数字来记,比如如果你2001年一月一日出生的话,你活到2002年1
月一日,他就会写个366。大致意思就是你现在的时间减去个出生的时间+1就是这个数字。
那么我们有没有办法将这个数字转化为日期呢,比如告诉你这个数字是1000你能立刻告诉我是哪一年的几月几号吗?

高斯的生日是1777-4-30,天数8113,问这一天的日期

这题是填空题要我写肯定直接笔算,思路的话有两种,一种是以四年为一周期,然后将天数除以周期,取余数,再将余数除以一年的天数,求得日期
另一种就是直接忽略闰年,用天数除以一年,然后算这么多年里有多少闰年,然后减去闰年数,最后余数是一年中的第多少天,这样就好算了。
(值得注意的是算的时候记得先将天数减1,否则会多出一天,比如你今天出生,算明天的话,天数是二,这个时候你不能直接将你的出生日期加2算了,需要先减一再加,这个自己想想吧,弄懂了它的意思再类比一下就轻松多了。)

我们先从简单的来好吧。
1、先忽略闰年,直接按一年365天算这样好了
2、加上闰年。(其实这题最难的就是区分闰年这个槛了)

一、只求一年之内某个数的具体日期(非闰年)

下面这个程序有点问题for循环里不是个变量,填32的话,二月等小月份输入的就是错的了。

#include<stdio.h>
main()
{int Day,i,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};Day=65;for(i=0;Day>32;i++){Day=Day-a[i];}printf("%d-%d",i+1,Day);
}

后来想想,加上个a[i]就行了。

#include<stdio.h>
main()
{int Day,i,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};Day=60;for(i=0;Day>a[i];i++){Day=Day-a[i];}printf("%d-%d",i+1,Day);
}

在这里插入图片描述
这里先填固定日期,不想让程序复杂化。
其实这个程序核心最有趣的地方就是利用了数组。

我想了下有没有办法反转一下呢,输入日期可以获得这是这一年的第多少天(非闰年)
在这里插入图片描述

#include<stdio.h>
main()
{int Day,i,j,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};printf("请输入现在的月份:\n");scanf("%d",&j);printf("请输入今天是几号:\n");scanf("%d",&Day);for(i=0;i<j-1;i++){Day=Day+a[i];}printf("这是今年的第%d天",Day);
}

还是挺有趣的不是,后面闰年的接着再写

二、以1年1月1日为出生日加入区分闰年方法

#include<stdio.h>
main()
{int Day,i,j,k,a[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31};j=0;printf("以1年1月1日为出生日:\n");printf("请输入你要输入的天数:\n");scanf("%d",&Day); for(i=0;Day>a[j][i];i++){if(j%4==0&&j%100!=0||j%400==0){j=0;Day=Day-a[j][i];}else{j=1;Day=Day-a[j][i];	}	}k=i/12;i=i%12;printf("%d年-%d月-%d日",k+1,i+1,Day);
}

在这里插入图片描述

这个程序有个大问题,刚开始我没注意。把数字算大了才知道这个i的值是没有减周期的,它在循环里涨到24之后就不会继续涨了,不信你可以输入1000试试,后面的Day必定会是三位数

于是乎我又调试了好久终于搞好了!!!

#include<stdio.h>
main()
{int Day,i,j,k,a[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31};j=0;k=0;printf("以1年1月1日为出生日:\n");printf("请输入你要输入的天数:\n");scanf("%d",&Day); //输入你要的天数 for(i=0;Day>a[j][i];i++){if(j%4==0&&j%100!=0||j%400==0){j=0;Day=Day-a[j][i];}else{j=1;Day=Day-a[j][i];	}if(i>11){i=0;//这个i的值把我坑惨了,刚开始输入的是1,找了好长时间都没发现这个bug,就是调试的时候发现输入397时间不对,也不知道哪里不对!!!k++;}	 }//for循环加if嵌套语句,两层嵌套,一个判断是否为闰年,一个保证i的循环在11以内 i=i%12;	 printf("%d年-%d月-%d日",k+1,i+1,Day);
}

在这里插入图片描述
在这里插入图片描述

上面那个好像还是错的,回头改了,这个到1400多天就又错了,工程过于复杂,弃了。

#include<stdio.h>
main()
{int Day,i,j,k,a[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31};j=1;k=0;printf("以1年1月1日为出生日:\n");printf("请输入你要输入的天数:\n");scanf("%d",&Day); //输入你要的天数 for(i=0;Day>a[j][i];i++){j=Day/365+1;if(j%4==0&&j%100!=0||j%400==0){j=1;Day=Day-a[j][i];}else{j=0;Day=Day-a[j][i];	}if(i>11){i=0;//这个i的值把我坑惨了,刚开始输入的是1,找了好长时间都没发现这个bug,就是调试的时候发现输入397时间不对,也不知道哪里不对!!!k++;}	 }//for循环加if嵌套语句,两层嵌套,一个判断是否为闰年,一个保证i的循环在11以内 i=i%12;	 printf("%d年-%d月-%d日",k+1,i+1,Day);
}

三、输入出生日,给定天数(距离元年一月一号),判断年月日。

#include<stdio.h>
main()
{int j,i,k,y,Day=0,Day1=0,Day2=0,a[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31};printf("请输入年数:");scanf("%d",&j);	printf("请输入月数");scanf("%d",&y);					printf("请输入天数");scanf("%d",&Day2);for(;j>1;j--){if(j%4==0&&j%100!=0||j%400==0){k=1;}else{k=0;}for(i=0;i<12;i++){Day=Day+a[k][i];}	}for(y=y-2;y>=0;y--){if(j%4==0&&j%100!=0||j%400==0){k=1;}else{k=0;}Day1=Day1+a[k][y];}Day=Day+Day1+Day2;printf("%d",Day);}

在这里插入图片描述
在这里插入图片描述

差不多可以了,头都转晕了,怪自己当时没把轮廓图画好,搞得bug百出,头疼!!!不能深陷进去了,没能完成说明我底子不够,等把基本功练够了,隔个半年再回来做吧!!!这个先放弃吧!!!
陷进去之后整个人都陷入debug深渊中,不能自拔,程序员太苦命了。所以刚开始的策划真的很重要,要不然像我这样后面就烂尾了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323429.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务配置中心实战:Spring + MyBatis + Druid + Nacos

转载自 微服务配置中心实战&#xff1a;Spring MyBatis Druid Nacos 很多基于 Spring MVC 框架的 Web 开发中&#xff0c;Spring MyBatis Druid 是一个黄金组合&#xff0c;在此基础上如果融入一个配置中心&#xff0c;会发生什么特别的变化呢&#xff1f; 本文将通过一…

揭晓新版《Windows Sysinternals实战指南》读书积赞活动

参与新版《Windows Sysinternals实战指南》&#xff0c;读书积赞活动的一下三位同学&#xff08;想法构成&#xff0c;我zzz&#xff0c;kergee&#xff09;&#xff0c;请加我微信geffzhang&#xff0c;把姓名&#xff0c;地址和手机号发给我&#xff0c;后续给你们寄书。.NET…

Spring Cloud 终于按捺不住推出了自己的服务网关 Gateway

转载自 Spring Cloud 终于按捺不住推出了自己的服务网关 Gateway Spring 官方最终还是按捺不住推出了自己的网关组件&#xff1a;Spring Cloud Gateway &#xff0c;相比之前我们使用的 Zuul&#xff08;1.x&#xff09; 它有哪些优势呢&#xff1f;Zuul&#xff08;1.x&…

ASP.NET Core中如何调整HTTP请求大小的几种方式

一、前言 一般的情况下&#xff0c;我们都无需调用HTTP请求的大小&#xff0c;只有在上传一些大文件&#xff0c;或者使用HTTP协议写入较大的值时&#xff08;如调用WebService&#xff09;才可能会调用HTTP最大请求值。 在ASP.NET Core 2.0中&#xff0c;它的两个宿主服务器Ke…

csdn颜色字体的改变

一直想改变一下csdn界面字体的颜色&#xff0c;奈何csdn上没有像Word那样直接改变字体颜色的版面&#xff0c;找半天没找到&#xff0c;后来才知道必须输入代码才能改变字体颜色&#xff0c;这个就很高级了啊 <font face"微软雅黑" color#FF8C00 size2> **一…

ASP.NET Core 2.0 使用支付宝PC网站支付

前言 最近在使用ASP.NET Core来进行开发&#xff0c;刚好有个接入支付宝支付的需求&#xff0c;百度了一下没找到相关的资料&#xff0c;看了官方的SDK以及Demo都还是.NET Framework的&#xff0c;所以就先根据官方SDK的源码&#xff0c;用.NET Standard 2.0 实现了支付宝服务端…

mysql实现查询分组查询最后一次的记录

大家好&#xff0c;我是雄雄。 前言 又好久没有写博客了&#xff0c;为什么呢&#xff1f;因为最近没怎么写代码…说起来也惭愧。 今天在项目上遇到了个需求&#xff0c;是这样的&#xff1a;我们数据库中有一表检测记录表&#xff0c;该表中存储的是所有居民每次的检测记录&…

常用公有云接入——华为

一、介绍 1、什么是弹性云服务器? 弹性云服务器是由CPU、内存、镜像、云硬盘组成的一种可随时获取、弹性可扩展的计算服务器&#xff0c;同时它结合虚拟私有云、虚拟防火墙、数据多副本保存等能力&#xff0c;为您打造一个高效、可靠、安全的计算环境&#xff0c;确保您的服…

jenkins~集群分发功能和职责处理

jenkins的多节点集群 在进行自动化部署时&#xff0c;你可以按着它们的项目类型去进行分别部署&#xff0c;这样即可以达到负载均衡&#xff0c;又可以达到一种职责的明确&#xff0c;比如像java的项目你可以使用linux服务来进行部署&#xff08;拉代码&#xff0c;还原&#x…

nginx中配置https的步骤

大家好&#xff0c;我是雄雄。 想必大家都有过配置https的需求吧&#xff0c;今天我就来整理一下&#xff0c;如何在nginx里面配置https 这里先忽略https申请&#xff0c;一般在你申请域名的那里直接弄就行&#xff0c;下面是nginx中的配置代码&#xff1a; server {listen …

爬取网页图片

前言 这几天又看了下python的视频&#xff0c;突然又对python感兴趣起来。以前只是学了下python的基础&#xff0c;感觉和其他语言没什么大的区别&#xff0c;再加上编程游戏的插件pygame一直没装上&#xff0c;遂放弃了。 最近心血来潮突然又想用python来搞游戏开发&#xff…

sql中索引不会被用到的几种情况

转载自 sql中索引不会被用到的几种情况 1、查询谓词没有使用索引的主要边界,换句话说就是select *&#xff0c;可能会导致不走索引。 比如&#xff0c;你查询的是SELECT * FROM T WHERE YXXX;假如你的T表上有一个包含Y值的组合索引&#xff0c;但是优化器会认为需要一行行的…

asp.net core合并压缩资源文件引发的学习之旅

0. 在asp.net core中使用BuildBundlerMinifier合并压缩资源文件 在asp.net mvc中可以使用Bundle来压缩合并css,js 不知道的见&#xff1a;http://www.cnblogs.com/morang/p/7207176.html 在asp.net core中则可以使用BuildBundlerMinifier来进行css&#xff0c;js的压缩合并 新建…

新服务器中如何安装jdk(一行命令)

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 今天我们看看如何在服务器中安装jdk&#xff0c;这里指的服务器是linux。 服务器版本&#xff1a;centos 7.8 jdk版本&#xff1a;jdk1.8 下面我们来介绍下命令是什么&#xff1a; yum -…

关于腾讯云域名解析

前言 在浏览qq空间的时候看到了腾讯云的广告&#xff0c;只要一块钱即可注册一个.club域名。想起前段时间看的博客&#xff0c;自己早晚要入手网站搭方面的内容&#xff0c;按捺不住心悸&#xff0c;遂买了个域名&#xff0c;起了个叫woyidiankuan的域名&#xff0c;本来想写k…

linux服务器中如何安装mysql数据库(一次性完成,包含远程连接)

大家好。我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 今天给大家介绍一下&#xff0c;如何在新服务器中安装mysql数据库&#xff0c;总是捣鼓服务器&#xff0c;每次都去网上查&#xff0c;次次都不一样&#xff0c;浪费好多时间&#xff0c;这次自己记录…

Postman高级应用——流程控制、调试、公共函数、外部数据文件

postman客户端下载地址&#xff1a;https://www.getpostman.com/apps 流程控制 流程控制简言之就是设置接口的执行顺序&#xff0c;流程控制只有在collection runner或Newman里才生效 如果需要实现多个接口的一次循环&#xff0c;只需在每个接口的Tests中编写脚本 postman.setN…

ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: N O)

今天早上起来原想着学习python的&#xff0c;想看看mysql&#xff0c;于是陷进去了。 明明没碰啊&#xff0c;怎么突然就启动不了了呢 输入mysql net start mysql 一直显示正在启动&#xff0c;最后蹦出个服务无法启动 网上查了下输入 mysqld --initialize 早上的时候输入的…

如何将base64图像数据以图片的形式上传到云存储obs中

大家好&#xff0c;我是雄雄。欢迎关注微信公众号&#xff1a;雄雄的小课堂。 今天分享个方法&#xff0c;如标题所示&#xff1a; 在日常开发中&#xff0c;我们经常会有这样的需求&#xff0c;将前台拿到的base64图像格式的数据&#xff0c;上传到云存储服务器上&#xff0c…

linux上还原自主nuget包需要注意的问题

问题的产生的背景 由于我们使用了jenkins进行部署&#xff08;jenkins~集群分发功能和职责处理&#xff09;&#xff0c;而对于.net core项目来说又是跨平台的&#xff0c;所以对它的项目拉取&#xff0c;包的还原&#xff0c;项目的编译和项目的发布都是在一台linux的jenkins节…