我们先看一个例子,是某老师的例题,很有意思: 说,八百年有一次,这个月有五个礼拜五,五个礼拜六,五个礼拜日。求验证。 尼玛,八百年?2013年3月份就是,那岂不是没有机会看到下一次了?先不管他,咱们先验证一下。 先看条件:要满足这个要求,(1)这个月必须有31天(2)第一天必须是星期五。 满足这两个条件就可以,那就开始验证吧! - using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace 复习2
- {
- class Program
- {
- static void Main(string[] args)
- {
- DateTime dt = DateTime.Now;
- while (true)
- {
- DateTime next = dt.AddMonths(1);
- DateTime first = new DateTime(next.Year, next.Month, 1);
- if (DateTime.DaysInMonth(next.Year, next.Month) == 31 && (first.DayOfWeek == DayOfWeek.Friday))
- {
- Console.WriteLine(next);
- break;
- }
- dt = next;
- }
- Console.ReadKey();
- }
- }
- }
- 运行:
- 2014/8/23 11:02:39
复制代码那我们打开日历去看一看,果然,这个月满足条件!!也就是说,哥们我还能看到很多这样的月。这个也不是什么千载难逢的意外事件!就是一个弱智的脑筋急转弯! 例子不是目的,看看我的分析啊: 遇到什么事情不要盲目的相信或者崇拜,咱们分析验证一下是否合理有依据。学会验证的方法和技能,那走遍天下都不怕!!盲目的相信没啥好处,例如有专家说了,四川几十年内 不会有大的地震,尼玛,这次震得也不小啊!有求知欲才会让人进步,嚼别人嚼过的馍 多恶心啊! 如果单纯从这个例子来看,有几个地方值得新手学习。就是一些方法的使用。 DateTime next = dt.AddMonths(1); DateTime first = new DateTime(next.Year, next.Month, 1); if (DateTime.DaysInMonth(next.Year, next.Month) == 31 && (first.DayOfWeek == DayOfWeek.Friday)) 这几句看着貌似真的有点乱。咱们一点点分析一下啊. DateTime next = dt.AddMonths(1);//这个是当前时间加一个月。就是说下个月 DateTime first = new DateTime(next.Year, next.Month, 1);//指下个月的第一天 if (DateTime.DaysInMonth(next.Year, next.Month) == 31 && (first.DayOfWeek == DayOfWeek.Friday))//如果下个月有31天而且第一天是星期五。 这不就不复杂了嘛。把自己的语言翻译为机器语言,学会查找方法,都是一个程序员需要掌握的技能。
|