大寒过后,必定立春

  为什么越靠北方的地区的人性格越直接呢?天寒地冻的,谁有时间给你磨叽。不跟我磨叽也别跟我吵架,我理解有些读者肯定是看到标题后会疑问,大寒过后还要天寒地冻很多天,怎么会是立春呢?作者呢在这里指的是二十四节气,大寒后面到立春之间就是黑暗前的黎明,大地沉寂中的曙光,柳暗花明又一村的欣喜,当然不排除倒春寒,这个另说。

这么冷的天还是不得不开始每天早早地起床工作,除非你能在床上挣钱,否则就必须起床,我是男的,你说呢?其实每年都有一个时刻,对于一年的收获,遗憾,感悟,做一次总结,挺好的其实。只不过我的总结喜欢放到四月,为什么呢?敲字不冻手!说都说了,还是总结下吧,今年干了啥,啥没干,总要有点交代。

  今年有一个重大的角色转变,从学生码农变成了程序员码农,都是码农有什么区别呢,工资高了,女朋友更漂亮了,很高兴的是还是那一个女朋友!学习的时间少了。去年的这个时候立了个flag,“2018野蛮生长”,当然这是指的是技术方面,学习了不少,忘了也不少,没有实践,忘是必然的,忘不代表没有学过,他在你脑子里的某个位置,随时调动,野蛮生长的结果就是没有章法,需要修剪,需要打磨,需要输出。有人说今年随着寒冬一起到来的还有互联网的寒冬,今年确实各大互联网公司都不是很好过,可能前天还蒸蒸日上今天就断井颓垣了,我也处在这个环境,也认真思考了下我的优势,是不是能够适应下去,我发现我真的需要好好总结一下学习问题了,更需要精卫填海了,不光要填海,还要填bug,并在填bug的道路上乐此不疲,像一头蜘蛛结网耳食,风摧之,结网之。

   今年搬了一次家,准确说是两次,其中一次只住了一个月,也就算了。我考察了很久最终选择了据我上次住的地方十几米的另一座楼,从三号楼到六号楼。也考虑过搬个稍微离公司远点的地方,但是实在没那个勇气,北京早晨的地铁略带艰辛,地铁没来的时候一群人,静静的低头玩手机,地铁门开了,这帮人动了起来,就好像变成一群丧尸,失去了人性,谁的屁股先坐下,位置就是谁的,我一般不去抢座位,但是有的时候裹挟其中,被硬挤上车,觉得有点可怜,还是找个离公司近的地方吧,我也不想和地铁来场人铁情未了啦!

   越长大越发现自己会有些焦虑,已发生的事情想去弥补,未发生的事情又有些担忧,父母也年纪大了,自己也不再是那个乘风少年了,诗和远方是能在心里越放越远。有的时候呢还要关注下国家大事,切身利益相关的也要关注点,有国才有家,即使是在奥威尔《1984》中老大哥领导的乌托邦国家,这个只许赞歌不许发出异议声音的社会,也要吃着地沟油操着XXX的心,环境不能改变也要改变自己的内心,精神上保持独立,为了祖国的繁荣稳定做一份贡献(背台词)。今年读了些书,读的比较少有七八本与编程无关的书,精神财富还是要充实的,读书可以提升一个人的格局,品格,素质,忍让生活的不完美。也学习了简单的瑜伽中的冥想方法,确实蛮有用的,推荐尝试下,思想与冥想的碰撞,总会对事情认识的更透彻。

  学习实践中,正常进行,做了些改进,学会了变通,主动承担,做的作品也有些成效。更加完善了自己的知识体系,将所学用到工作中,更多的运用设计模式,对敲代码的设计深究算法与数据接口的运用,看了几本专业书,总结归纳。也接着更新了自己的博客小有成效,学习了大量的学习视频,一步又一步的完成各种尝试性的工作,编程是个坑需要填,知识储备越多埋点越快,这个我所爱的技术,我不精进技术何以立命。

  我和我的小情人,今年带着她去她想去的地方溜达了几圈,还是用不会拍照的手拍了几张爱情的照片。记忆总是打着芬芳烙印,留在那个时光拐角处绽放,我和她在一起又一年,她又胖了,一会说吃你家呢的喝你家的了,凭本事吃的为啥减肥,一会又说冬天到了屯点肉抵挡严寒,往年我都是会抱怨她为啥不减肥呢,然而今年却不能说了,因为我也胖了,所以19年刚开始就开始天天健身房了,也不知道能坚持多久。今年我们一起相互依偎,不必刻意掩饰情绪,最真实踏实的依靠,努力在她面前做个英雄,为她遮风挡雨,她是我的港湾,让我焦灼的心有个安放的地方。希望新的一年里我们会共度风雨,阳光是你,明媚也是你。

   罗素说:我为什么而活着,对知识的向往,对爱情的追求,对人类苦难不可遏制的同情心。新的一年,在路上,对技术的渴望,对爱情,今夕何夕,见此良人。

子任务4:确定程序所需的数据结构 经过以上分析可知,为了得到公历日期对应的星期、农历日期、节气、节日,程序需要预知以下数据: 1月1日的星期:weekday_2025; 1月1日的农历日期:lunar_start_date_2025; 每个农历月份的天数:lm_days_2025; 是否有农历闰月。若有,是几月:lm_leap_month_2025; 每个节气对应的公历日期:solar_terms_2025; 每个节日对应的公历日期或农历日期:feasts。 查阅得到这些信息,以合适的形式写进程序中即可。(把数据写进程序,称为数据“硬编码”,是比较糟糕的做法。但作为最初的探索,却是最快能够看到结果的。后续将分离程序与数据,解决数据“硬编码”的问题) 其中,除了weekday与feasts之外,其余都是每年有一份数据。其中,下一年的weekday可以轻而易举地按照上一年的weekday计算得到,因而只需要保存其中某一年的weekday,而不需要每年都保存一份。 节日feasts与年份无关,比如每年的国庆节都是10月1日、春节都是正月初一,因而也无需每年都保存一份。 其余数据,均与年份有关,需要每年保存一份。 日期表示 日期,是程序中的基本概念,完整的日期包含公历日期、农历日期、星期、节气、节日等多项成员。比如,可以表示为: struct u_date_t { short year; char month; char day; }; struct full_date_t { struct u_date_t solar_date; struct u_date_t lunar_date; char weekday; char solar_term; char feast; }; 这样做当然是可以的,但可能使程序代码显得冗长。由于T1任务中并没有用到full_date_t结构体的情形,为使程序代码简短,暂不考虑这样表示日期,但保留struct u_date_t结构体作为公历日期与农历日期统一的表示方式。 关键是要解决第2步中“预知数据”的表示及存储。 计算星期几所需的数据 每年1月1日是星期几,可以从1970年1月1日是星期几计算得到。因而,只需要存储weekday_1970即可。 const char weekday_1970 = 4; /* 1970年1月1日是星期四 */ 节日对应的日期只需要月、日,可以表示为: const struct feast_t { enum {SOLAR, LUNAR} type; struct u_date_t u_date; const char * name; } g_feasts[] = { {SOLAR, {0, 1, 1}, "元旦"}, {LUNAR,{0, 1, 1}, "春节"}, {SOLAR, {0, 10, 1}, "国庆节"}, {LUNAR, {0,5,5}, "端午节"} }; 更多的节日按同样格式加到结构体数据中即可。借用之前定义的struct u_date_t结构体时,此处用不到其中的year成员,初始化为用不到的0即可。 每年需要单独存储的数据 以下4个数据每年需要单独存储: 1月1日的农历日期:lunar_start_date_2025; 每个农历月份的天数:lm_days_2025; 是否有农历闰月。若有,是几月:lm_leap_month_2025; 每个节气对应的公历日期:solar_terms_2025; 可以放到同一个struct中: struct lunar_info_t { struct u_date_t lunar_start_date; char lm_days[12]; /* 12个农历月每月的天数 */ char lm_leap_month; /* 农历闰月的月份序号,无闰月时为0 */ char solar_terms[24]; /* 24个节气对应的公历日期 */ } g_lunar_info[130] = {……}; /* 从1970~2099共130年 */ 完成以上两个struct之后,发现u_date_t.year到处都用不到,删除该成员,相应修改初始化数据。注意:这一步必须要等到最后再做,不要过早地下结论。这旧工作属于“优化”的范畴,过早优化是万恶之源。首先按部就班、不厌其烦地完成可以运行的程序,绝不在程序还不能运行之前开始优化,才是编程的正确做法。 基础数据 除了参与计算的数据之外,星期、农历月份与日期、节气在程序内部都使用整数表示,而输出时都需要转换成字符串,这类数据统一放到基础数据中。 const stuct base_info_t { const char weekday_1970; const char * wd_name[7]; const char * lm_name[12]; const char * ld_name[30]; const char * st_name[24]; } g_bi = { .weekday_1970 = 4, .wd_name = {"星期日", "星期一", "星期二","星期三","星期四","星期五", "星期六"}, .lm_name = {"正月", "二月","三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "冬月", "腊月"}, .ld_name = {"初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十"}, .st_name = {"小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分","寒露", "霜降", "立冬", "小雪", "大雪", "冬至"} }; 有了如上分析和数据基础,可以得到能够正确计算出每天是星期几,以及2025年每天对应农历日期的程序。 写出完整的C语言程序代码。
最新发布
06-30
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值