如何自动求生肖?

薛东旭薛东旭最佳答案最佳答案

这里给几个思路,仅供参考。

1. 使用字典。建立这样的字典:键为年份,值为该年的农历初一对应的干支。比如,2016年农历初一是丙申日,查询这个干支对应的年份就是2016。这样,当输入的年份未知时,就可以通过查找得到对应的干支,然后再进一步计算出对应的生肖。

2. 使用正则表达式。虽然正则表达式不是专门为匹配日期设计的,但用于此场景也无不可。其核心思想仍然是将需要匹配的数字分割成整数和尾数两部分,然后分别处理。整数部分相对简单,只要记住19世纪西方通用的历法规则即可。但是尾数的处理稍微麻烦点,因为农历有闰月,阳历有闰年。不过,只要记清楚“每19个年份中有7个闰年”以及“每一个闰年中都有两个二月”,就基本可以搞定。

3. 使用计算机算法。既然已知要解决的是关于闰年和闰月的计算问题,那么可以直接使用计算机进行计算。具体的算法可以参考公历与农历之间换算的文章。 其实,如果熟悉C语言或者C++的话,完全可以自己写一个满足要求的函数,用递归的办法就能搞定所有的问题。

杜宇浩杜宇浩优质答主

在我们的日常用表中经常需要根据出生日期自动给出属相,通常我们的做法是建立一个属相填充序列,然后在出生日期列的后面一列插入该序列,但是,这样的做法往往不够灵活,那么我们是否能通过出生日期自动计算出属相呢?答案是肯定的,我们可以很方便地完成这个属相与日期之间的关联。让我们来看看如何操作吧。

这里我们以“2012-1-1”作为属龙年的起始日期,利用出生日期与起始日期相减除以12取余数的方法,来确定属相的编码,然后通过查找引用确定属相,最后利用查找引用的函数INDIRECT()实现自动计算属相,这里用到的几个函数的用法如下。(具体操作过程请看视频)

=MOD(number,divisor)用来返回两数相除的余数。Number为被除数,Divisor为除数。结果的正负号与除数相同。

=LOOKUP(lookup_value,array)在数组或数据表中按行查找,然后返回选定行中某一列的数值。

=INDIRECT(ref_text,a1)返回由文本指代的引用。Ref_text为对单元格的引用,它是一个A1-样式引用,是一个对XlA1样式的、对R1C1样式单元格的引用,是一个名称,或是一个对单元格的图例。A1为一个逻辑值,说明单元格引用样式的类型。如果a1为TRUE或被省略,ref_text被解释为A1-样式引用;如果a1为FALSE,ref_text被解释为R1C2样式引用。

我来回答
请发表正能量的言论,文明评论!