zoukankan      html  css  js  c++  java
  • 综合练习:双排月历

    将两个月历并排打印
    如果你可以独立完成,那说明你对编程已经有了一定的控制能力了

      1public static void Main(string[] args)
      2        {
      3
      4
      5            System.DateTime dt1 = new System.DateTime(200411);
      6            System.DateTime dt2 = new System.DateTime(200421);
      7            System.DateTime tmpdt;
      8            int tmpMonth1;//记录当前要操作的单月
      9            int tmpMonth2;//记录当前要操作的偶月
     10            int change = 0;//0为单月,1为偶月
     11            char[] weekChar = "日一二三四五六".ToCharArray();
     12
     13            //输出标题,每个标题之间空2个间隔,每个月之间空4个间隔
     14            for (int j = 0; j <= 1; j++)
     15            {
     16                for (int i = 0; i <= weekChar.Length - 1; i++)
     17                {
     18                    System.Console.Write("{0}  ", weekChar[i]);
     19                }

     20                System.Console.Write("    ");
     21            }

     22            System.Console.WriteLine();
     23            tmpMonth1 = dt1.Month; tmpMonth2 = dt2.Month;
     24            tmpdt = dt1;//将要打印的月交给打印控制
     25
     26            do//控制月
     27            {
     28                //定位每月的第一个打印位置(跳出需要打印月的不要打印)
     29                if (tmpdt.Day == 1)
     30                {//如果是当前控制月的第一天,先需要打印定位
     31                    if (tmpMonth1 == dt1.Month && tmpMonth2 == dt2.Month)
     32                    {
     33                        for (int i = 0; i <= (int)tmpdt.DayOfWeek - 1; i++)
     34                        {
     35                            System.Console.Write("{0}{1}""  ""  ");
     36                        }

     37                    }

     38                    else//不是本月就不要打了
     39                    {
     40                        System.Console.Write("");
     41                    }

     42                }

     43
     44                //打印每一天
     45                if (tmpdt.Day < 10)//如果日期<10,在前面多打一个空格
     46                {//正常情况正常打印
     47                    if (tmpMonth1 == dt1.Month && tmpMonth2 == dt2.Month)
     48                    {
     49                        System.Console.Write(" {0}  ", tmpdt.Day);
     50                    }

     51                    else
     52                    {//否则不打印日期,只打印一个占位间隔
     53                        if (change == 0 && tmpMonth1 != dt1.Month)
     54                        {
     55                            System.Console.Write(" {0}  "" ");
     56                        }

     57                        if (change == 1 && tmpMonth2 != dt2.Month)
     58                        {
     59                            System.Console.Write(" {0}  "" ");
     60                        }

     61                    }

     62                }

     63                else
     64                {
     65                    System.Console.Write("{0}  ", tmpdt.Day);
     66                }

     67
     68                //处理周六的情况
     69                if (tmpdt.DayOfWeek == System.DayOfWeek.Saturday)
     70                {//打印周六后是打印月间隔(单月)还是换行(偶月),同时收回打印控制
     71
     72                    if (change == 0)
     73                    {//单月
     74                        dt1 = tmpdt.AddDays(1);
     75                        System.Console.Write("    ");//月间隔
     76                        tmpdt = dt2;//交换控制
     77                    }

     78                    else
     79                    {//双月
     80                        dt2 = tmpdt.AddDays(1);
     81                        System.Console.WriteLine("");//换行
     82                        tmpdt = dt1;//交换控制
     83                    }

     84                    change = 1 - change;//切换标志
     85                }

     86                else//仅仅转到下一天
     87                {
     88                    tmpdt = tmpdt.AddDays(1);
     89                    if (change == 0)
     90                    { dt1 = tmpdt; }
     91                    else
     92                    { dt2 = tmpdt; }
     93                }

     94
     95                //交换单偶月
     96
     97            }

     98            while (tmpMonth1 == dt1.Month || tmpMonth2 == dt2.Month);//单月和偶月都结束
     99
    100            System.Console.WriteLine();
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111        }
  • 相关阅读:
    蒟蒻的填坑计划
    现在的状态....
    date modify
    set source
    image source
    simple auth
    net
    bridge
    iptable
    namespace
  • 原文地址:https://www.cnblogs.com/shyleoking/p/635763.html
Copyright © 2011-2022 走看看