A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王德钊 中级黑马   /  2013-4-23 20:35  /  989 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我们先看一个例子,是某老师的例题,很有意思:
说,八百年有一次,这个月有五个礼拜五,五个礼拜六,五个礼拜日。求验证。
尼玛,八百年?20133月份就是,那岂不是没有机会看到下一次了?先不管他,咱们先验证一下。
先看条件:要满足这个要求,(1)这个月必须有31天(2)第一天必须是星期五。
满足这两个条件就可以,那就开始验证吧!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. namespace 复习2
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             DateTime dt = DateTime.Now;
  12.             while (true)
  13.             {
  14.                 DateTime next = dt.AddMonths(1);
  15.                 DateTime first = new DateTime(next.Year, next.Month, 1);
  16.                 if (DateTime.DaysInMonth(next.Year, next.Month) == 31 && (first.DayOfWeek == DayOfWeek.Friday))
  17.                 {
  18.                     Console.WriteLine(next);
  19.                     break;
  20.                 }
  21.                 dt = next;
  22.             }
  23.             Console.ReadKey();
  24.         }
  25.     }
  26. }

  27. 运行:
  28. 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天而且第一天是星期五。
这不就不复杂了嘛。把自己的语言翻译为机器语言,学会查找方法,都是一个程序员需要掌握的技能。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

2 个回复

正序浏览
不错了,转了!
回复 使用道具 举报
不错啊!其实把思路理清了,代码上没有难点对吧!第一步分析清题目意思才是重点!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马