c语言switch判断星座,通过日期计算星座 - osc_d41sfzmu的个人空间 - OSCHINA - 中文开源技术交流社区...
分析和理解根据日期计算星座函数
起始月份
号数
星座
结束月份
号数
时间区间
12
22
摩羯座
1
19
12/22 - 1/19
1
20
水瓶座
2
18
1/20 - 2/18
2
19
双鱼座
3
20
2/19 - 3/20
3
21
白羊座
4
20
3/22 - 4/20
4
21
金牛座
5
20
4/22 - 5/20
5
21
双子座
6
21
5/22 - 6/21
6
22
巨蟹座
7
22
6/22 - 7/22
7
23
狮子座
8
22
7/22 - 8/22
8
23
处女座
9
22
8/22 - 9/22
9
23
天秤座
10
22
9/22 - 10/22
10
23
天蝎座
11
21
10/22 - 11/21
11
22
射手座
12
21
11/22 - 12/21
12
22
摩羯座
1
19
12/22 - 1/19
一年12个月份
抽象一个数组
c = [摩羯,水瓶, 双鱼,白羊,金牛,双子,巨蟹,狮子,处女,天秤,天蝎,射手,摩羯]
c 为月份列表 该数组中序号为 1 的水瓶座对应的起始月份为 1月
序号为 起始月份 或者 (结束月份 - 1)
日期所对应的星座 起始月份为日期所在月 或者 终结月份为该月**(即起始月份为日期所在月-1)**
为了得出日期对应的星座,我们通过日期来计算对应星座的起始月份
startMonth = month - [(day < Date[month]) ? 1 : 0]
c = [摩羯,水瓶, 双鱼,白羊,金牛,双子,巨蟹,狮子,处女,天秤,天蝎,射手,摩羯]
index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Date = [22, 20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22]
startMonth - 计算后对应星座的起始月份;
Month - 日期对应的月份;
day - 日期对应的号数;
Date - 月份列表对应的日期列表;
解释:
对应星座起始月份 = 当前月份 - [(当前日期是否小于对应月份的日期)是则为1,否则为0]
判断(日期对应号数 < 起始月份为日期对应月份的星座的起始号数)
例子 2月18日 为水瓶座 2月19日 为双子座
18 < 19 (19为2月的双鱼座的起始日期) 小于成立即 2 - 1 = 1 一月对应的星座为水瓶座
19 = 19 小于不成立, 2 - 0 = 2 所以为二月对应的星座 双鱼座
简化列表 将日期列表取消 day < Date[month] =》 day - x < Date[month] - x
令 y = Date[month] - x ,y需要为个位数
现在起始日期对应的号数 最小为19号(双鱼座) 最大为23号(狮子座) 穷举并且列出表格
x
y
x + y = 19
x
y
x + y =23
10
9
14
9
√
11
8
15
8
√
12
7
16
7
√
13
6
17
6
√
14
5
√
18
5
√
15
4
√
19
4
√
16
3
√
20
3
17
2
√
21
2
18
1
√
22
1
19
0
√
23
0
两列中x的交集为 14 -19
取x = 14
Date = [22, 20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22]
date - 14 最后列表为8,6,5,7,7,8,9,9,9,9,8,8 => '865778999988'
startMonth = month - [(day < Date[month]) ? 1 : 0]
=> month - (day - 14 < '865778999988'.charAt(month))
true 自动变为 1;
false 自动变为 0;
charAt为寻找字符串对应位置的str
最终代码
var date = new Date(2017,1,12);
//设置日期
function getHoroscope(date) {
var c = ['摩羯','水瓶','双鱼','白羊','金牛','双子','巨蟹','狮子','处女','天秤','天蝎','射手','摩羯']
var month = date.getMonth() + 1;
var day = date.getDate();
var startMonth = month - (day - 14 < '865778999988'.charAt(month));
return c[startMonth]
}
getHoroscope(date);
//水瓶
c语言switch判断星座,通过日期计算星座 - osc_d41sfzmu的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐
- c语言问答题斐讯通信,C总结-part_1 - LinearLaw的个人空间 - OSCHINA - 中文开源技术交流社区...
1_C语言概述 1.库引用 1.1.几个例子 例1,调用系统指令 // b.c #include int main(void) { // system函数,相当于在命令行界面中输入对应的命令 syst ...
- mysql怎么 计算周岁_C#计算周岁 - osc_h7d57ub2的个人空间 - OSCHINA - 中文开源技术交流社区...
/// /// 计算年龄字符串(周岁) /// 默认返回:xx岁xx月xx日 /// /// 第1个日期参数 /// 第2个日期参数 /// 返回字符串的格式,默认为:{0}岁{1}月{2}日 pri ...
- 直白点理解c 语言中的循环体,反射机制 小小谈 - osc_nnbkiac5的个人空间 - OSCHINA - 中文开源技术交流社区...
反射机制(Reflection) [TOC] 写在前面 本文地址:https://www.cnblogs.com/oberon-zjt0806/p/11082012.html 这里是Oberon 本文 ...
- c语言 开辟复数指针数组,指针和数组 - llwwzz的个人空间 - OSCHINA - 中文开源技术交流社区...
指针的几个要点: 一 指针的定义,赋值 要区分: int a; int *p = &a; 这是定义的时候初始化,即赋值 ======================= int a; int * ...
- c语言ik,C语言入门 - osc_xgq4n4ik的个人空间 - OSCHINA - 中文开源技术交流社区
学完java和py再学这个感觉真的是不爽,前面的还好,基本都直接上手了,但是还是记录一下吧,毕竟学不会得挂科呀 hello #include int main() { printf("hel ...
- 按照c语言规首字母只能是,C语言--指针 - osc_nbqoh20k的个人空间 - OSCHINA - 中文开源技术交流社区...
[TOC] #知识内容总结 ##为什么要学习指针? 我们已经学习了如何用数组存放多个相同类型的数据并进行运算,但数组的长度在定义时必须给定以后不能再改变.如果事先无法确定需要处理数据数量,应该如何处理 ...
- c语言第三次作业(循环),C语言——第三次作业 - osc_kt69pvbx的个人空间 - OSCHINA - 中文开源技术交流社区...
#作业要求一# 题目6-1 输出月份英文名 题目6-2 查找星期 题目6-3 计算最长的字符串长度 题目6-4 指定位置输出字符串 作业:C高级第三次作业(2)没有思路,知识点也没有明白,未完成. # ...
- %20ld c语言,C语言第二次实验报告 - osc_ldea7g3t的个人空间 - OSCHINA - 中文开源技术交流社区...
一.实验题目,设计思路,实现方法 第十一次作业(二维数组): 11-5 打印杨辉三角(20 分) 本题要求按照规定格式打印前N行杨辉三角. 输入格式: 输入在一行中给出N(1≤N≤10). 输出格式: ...
- java实现自举_实现语言的自举 - 沙枣的个人空间 - OSCHINA - 中文开源技术交流社区...
几乎所有的语言项目,其核心都是用更底层的语言写的. 底层语言大部分是 C,C++,而扩展这门语言的核心,就要用另外一种语言 去写.这给语言设计者较大的挑战. 开发语言必须具备底层语言的编写能力,而为了 ...
最新文章
- 面试必问---Java线程池8大拒绝策略
- Chrome Extension 检查视图(无效)处理方法
- 034:DTL常用过滤器(3)
- sharepoint权限操作(记录以备忘)
- java反多态的代码_Java多态性代码详解
- android 静态list,android studio 利用gradle和cmakelist生成c++静态库.a的方法总结
- 文字打印机 效果实现
- 常见Kotlin高频问题解惑
- ubuntu下查看进程端口
- java里shake是什么意思_shake是什么意思_shake在线翻译_英语_读音_用法_例句_海词词典...
- 基于用户角色的数据库智能监控系统应用场景分析
- 吴恩达《机器学习》第二章:线性回归
- 我的 Visual C++ 6.0学习网站
- UOS家庭版(21.2)安装SecureCRT(scrt-9.1.1-2638.ubuntu20-64.x86_64.deb)无法运行问题
- Java发送mail报错“java.util.ServiceConfigurationError: com.sun.mail.imap.IMAPProvider not a subtype”
- mpeg格式转换成mp4,mpeg转mp4
- MBTI职业性格在软件研发组织中不同岗位的分布研究
- 【Unity Shader 消融效果_案例分享】
- 计算机考研各科目分值分布,2019考研各科目试卷分值分布及结构分析
- 超融合架构的本质是什么(上)