2014-12-22

    今天和老板面对面的做了performance review。觉得老板的有些话确实是对的。虽然平时和老板的接触不多,平时心里也没有刻意的去接触老板,但是这次短暂的f2f中老板说的话确实使我受益匪浅,同时也知道了自己的不足。

    通过这次performance review,把心得总结如下:

        1. 一个人不光要有硬实力,还要有软实力。硬实力和软实力是同等重要的。其中硬实力是指一个人工作上的技术能力,拿software engineer来讲,coding,design,debug等等都算是硬实力。有了这些硬实力工作起来就会得心应手,能够给大家交出一份完美的成果,有了这个成果就有了后面要说的软实力的基础。

        2.所谓软实力,目前想到的大概就是与人交往沟通的技能。比如:完成了一个项目的话要能够把项目讲解清楚。不光要做好,还要说好,让别人更清楚的了解你做了什么,才会对你有个客观上的评价。

        3. 从自己的角度来讲,硬实力是自己一直重视并且努力提高的地方;软实力的话自己需要重视起来。软硬结合方为做人工作之本。否则要么被人说成死干活,要么就被人说成不干活老油条。

        4. 开始准备找工作面试了,需要把基础准备好。这个准备不只准对这次找工作,还要着眼长期提升自己的能力。也不枉自己在诺基亚和微软呆了一回。

    加油加油。

内容概要:本文介绍了一种基于蒙特卡洛模拟和拉格朗日优化方法的电动汽车充电站有序充电调度策略,重点针对分时电价机制下的分散式优化问题。通过Matlab代码实现,构建了考虑用户充电需求、电网负荷平衡及电价波动的数学模【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺和拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)型,采用拉格朗日乘子法处理约束条件,结合蒙特卡洛方法模拟大量电动汽车的随机充电行为,实现对充电功率和时间的优化分配,旨在降低用户充电成本、平抑电网峰谷差并提升充电站运营效率。该方法体现了智能优化算法在电力系统调度中的实际应用价值。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事新能源汽车、智能电网相关领域的工程技术人员。; 使用场景及目标:①研究电动汽车有序充电调度策略的设计与仿真;②学习蒙特卡洛模拟与拉格朗日优化在能源系统中的联合应用;③掌握基于分时电价的需求响应优化建模方法;④为微电网、充电站运营管理提供技术支持和决策参考。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注目标函数构建、约束条件处理及优化求解过程,可尝试调整参数设置以观察不同场景下的调度效果,进一步拓展至多目标优化或多类型负荷协调调度的研究。
<think>嗯,用户想用C语言编写一个程序,根据输入的日期判断某人在打渔还是晒网。这个问题看起来有点挑战性,但让我慢慢理清思路。 首先,我需要理解题目要求。根据引用[1],这个人的工作周期是三天打鱼,两天晒网,从1990年1月1日开始。所以关键点在于计算给定日期距离1990年1月1日的总天数,然后用这个天数对5取余,余数1-3是工作,4-0是休息。 那步骤应该是这样的:首先验证输入的有效性,包括年份是否小于1990,月份和日期是否合法。然后计算从1990年1月1日到输入日期的总天数,再对5取模判断状态。 验证日期有效性需要注意月份是否在1-12之间,每个月的天数是否正确。比如2月要考虑闰年,闰年的判断是能被4整除但不能被100整除,或者能被400整除。其他月份如4、6、9、11月有30天,其余31天。 计算总天数的话,需要累加从1990到目标年份前一年的每年天数,再加上当年的已过天数。每年的天数要考虑闰年,如果是闰年就是366天,否则365天。然后处理当年的月份,比如输入的是2024-5-20,那么要计算1月到4月的总天数,再加上20天。 接下来是具体的实现步骤。主函数结构大致分为输入处理、有效性检查、天数计算、状态判断。可能需要写几个辅助函数,比如判断闰年的函数,检查日期是否合法的函数,计算天数的函数。 在C语言中,处理输入的时候需要注意格式字符串,使用"%4d-%2d-%2d"来读取年、月、日。然后检查输入的年份是否>=1990,月份是否在1-12之间,日期是否在有效范围内。 日期有效性检查函数需要处理每个月的天数,特别是二月的情况。例如,如果是闰年,二月有29天,否则28天。其他月份的天数可以预先定义数组,比如daysInMonth[] = {31,28,31,30,...},然后根据月份和是否闰年来调整二月的天数。 计算总天数时,循环从1990年到year-1年,每年判断是否闰年,累加天数。然后处理当年的月份,从1月到month-1月,每个月的天数累加,最后加上day-1(因为从1号开始算第一天)。 得到总天数后,对5取余,余数为1、2、3时工作,0或4时休息。例如,余数为0可能对应第五天,也就是晒网的最后一天。 测试用例方面,比如输入2014-12-22,应该输出工作;输入2014-12-24,输出休息。还有非法日期如2014-12-32,要提示无效输入。 可能遇到的错误包括闰年判断错误,月份天数计算错误,或者输入格式不正确。需要仔细处理这些边界情况。 另外,代码结构要清晰,把不同的功能模块化,比如isLeapYear函数,isValidDate函数,calculateTotalDays函数,这样代码易读且易于调试。 最后,输出结果要根据判断条件输出相应的字符串,并在输入无效时给出提示。</think>以下是根据日期判断打渔/晒网状态的C语言实现方案: ### 实现步骤说明 1. **输入验证**:验证日期是否合法(年份≥1990且日期真实存在) 2. **天数计算**:计算1990-01-01到目标日期的总天数 3. **状态判断**:总天数模5判断工作周期(余数1-3工作,0/4休息) ### 完整代码实现 ```c #include <stdio.h> // 判断闰年函数 int isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0; } // 日期有效性验证函数 int isValidDate(int year, int month, int day) { if (year < 1990 || month < 1 || month > 12 || day < 1) return 0; int daysInMonth[] = {31,28,31,30,31,30,31,31,30,31,30,31}; if (isLeapYear(year)) daysInMonth[1] = 29; return day <= daysInMonth[month-1]; } // 计算总天数函数 int calculateTotalDays(int year, int month, int day) { int total = 0; // 累加完整年份天数 for (int y = 1990; y < year; y++) { total += isLeapYear(y) ? 366 : 365; } // 累加当年月份天数 int daysInMonth[] = {31,28,31,30,31,30,31,31,30,31,30,31}; if (isLeapYear(year)) daysInMonth[1] = 29; for (int m = 1; m < month; m++) { total += daysInMonth[m-1]; } // 累加当月天数 return total + day - 1; // 减去1天(起始日不计入) } int main() { int year, month, day; scanf("%4d-%2d-%2d", &year, &month, &day); if (!isValidDate(year, month, day)) { printf("Invalid input"); return 0; } int totalDays = calculateTotalDays(year, month, day); int remainder = totalDays % 5; printf(remainder < 3 ? "He is working" : "He is having a rest"); return 0; } ``` ### 关键算法说明 1. **闰年判断**:使用标准闰年计算公式$ (year\%4==0 \&\& year\%100!=0) || year\%400==0 $[^1] 2. **日期验证**:通过月份对应天数表进行验证,处理闰年二月特殊情况 3. **周期计算**:总天数模5后,余数0-4分别对应第5天到第4天的状态周期
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值