• c#从控制台输入年月,控制台输出当月日历。


    提示:

      1、1900年1月1日是星期一;

      2、判断该年是否是闰年;

     1 //判断今年是不是闰年
     2         static bool LeapYear(int year)
     3         {
     4             if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
     5             {
     6                 return true;
     7             }
     8             else
     9             {
    10                 return false;
    11             }
    12         }

      3、计算本月的天数;

     1 int day = 0;//声明一个变量,保存当月天数
     2             //计算当月的天数
     3             switch (month)
     4             {
     5                 case 12: day = 31; break;
     6                 case 11: day = 30; break;
     7                 case 10: day = 31; break;
     8                 case 9: day = 30; break;
     9                 case 8: day = 31; break;
    10                 case 7: day = 31; break;
    11                 case 6: day = 30; break;
    12                 case 5: day = 31; break;
    13                 case 4: day = 30; break;
    14                 case 3: day = 31; break;
    15                 case 2: day = SN?29:28; break;
    16                 case 1: day = 31; break;
    17             }

      4、计算本月第一天是星期几;

     1 //计算输入日期中月份第一天是星期几
     2         private static int XingQi(int year, int month,bool SN)
     3         {
     4             int sum = 0;//声明一个保存天数的变量
     5             //当年以前的总天数
     6             for (int i = 1900; year > i; i++)
     7             {
     8                 if (LeapYear(year))
     9                 {
    10                     sum += 366;
    11                 }
    12                 else
    13                 {
    14                     sum += 365;
    15                 }
    16             }
    17             //当月以前的总天数(平年)
    18             switch (month)
    19             {
    20                 case 1: sum += 0; break;
    21                 case 2: sum += 31; break;
    22                 case 3: sum += 59; break;
    23                 case 4: sum += 90; break;
    24                 case 5: sum += 120; break;
    25                 case 6: sum += 151; break;
    26                 case 7: sum += 181; break;
    27                 case 8: sum += 212; break;
    28                 case 9: sum += 243; break;
    29                 case 10: sum += 273; break;
    30                 case 11: sum += 304; break;
    31                 case 12: sum += 334; break;
    32             }
    33             //当年是闰年,且月份大于2,天数加1
    34             if(SN==true && month>2)
    35             {
    36                 sum++;
    37             }
    38             //这里天数加1,是应为前面天数为当月前的总天数,而我们要得到的是当月第一天的星期对应数值
    39             return (sum + 1) % 7;
    40         }

      5、按格式输出当月日历。

     1 //按格式输出本月日历
     2             Console.WriteLine("日	一	二	三	四	五	六");
     3             for (int i = 1; i <= xq + day; i++)
     4             {
     5                 if (i <= xq)
     6                 {
     7                     Console.Write("	");
     8                 }
     9                 else
    10                 {
    11                     Console.Write(i-xq+"	");
    12                 }
    13                 //换行
    14                 if(i%7==0)
    15                     Console.WriteLine();
    16             }

    整体代码:

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 
      6 
      7 namespace ConsoleApplication1
      8 {
      9     class Program
     10     {  
     11         static void Main(string[] args)
     12         {
     13             //提示用户输入年月
     14             Console.WriteLine("请输入年月");
     15             int year =Convert.ToInt32(Console.ReadLine());//声明一个年变量并接收保存用户的输入
     16             int month = Convert.ToInt32(Console.ReadLine());//声明一个年变量并接收保存用户的输入
     17             bool SN=LeapYear(year);//调用闰年判断函数,判断当年是不是闰年
     18             int xq=XingQi(year,month,SN);//声明一个变量,保存星期的对应数值
     19 
     20 
     21             int day = 0;//声明一个变量,保存当月天数
     22             //计算当月的天数
     23             switch (month)
     24             {
     25                 case 12: day = 31; break;
     26                 case 11: day = 30; break;
     27                 case 10: day = 31; break;
     28                 case 9: day = 30; break;
     29                 case 8: day = 31; break;
     30                 case 7: day = 31; break;
     31                 case 6: day = 30; break;
     32                 case 5: day = 31; break;
     33                 case 4: day = 30; break;
     34                 case 3: day = 31; break;
     35                 case 2: day = SN?29:28; break;
     36                 case 1: day = 31; break;
     37             }
     38 
     39             //按格式输出本月日历
     40             Console.WriteLine("日	一	二	三	四	五	六");
     41             for (int i = 1; i <= xq + day; i++)
     42             {
     43                 if (i <= xq)
     44                 {
     45                     Console.Write("	");
     46                 }
     47                 else
     48                 {
     49                     Console.Write(i-xq+"	");
     50                 }
     51                 //换行
     52                 if(i%7==0)
     53                     Console.WriteLine();
     54             }
     55 
     56                 Console.ReadLine();
     57         }
     58 
     59         //计算输入日期中月份第一天是星期几
     60         private static int XingQi(int year, int month,bool SN)
     61         {
     62             int sum = 0;//声明一个保存天数的变量
     63             //当年以前的总天数
     64             for (int i = 1900; year > i; i++)
     65             {
     66                 if (LeapYear(year))
     67                 {
     68                     sum += 366;
     69                 }
     70                 else
     71                 {
     72                     sum += 365;
     73                 }
     74             }
     75             //当月以前的总天数(平年)
     76             switch (month)
     77             {
     78                 case 1: sum += 0; break;
     79                 case 2: sum += 31; break;
     80                 case 3: sum += 59; break;
     81                 case 4: sum += 90; break;
     82                 case 5: sum += 120; break;
     83                 case 6: sum += 151; break;
     84                 case 7: sum += 181; break;
     85                 case 8: sum += 212; break;
     86                 case 9: sum += 243; break;
     87                 case 10: sum += 273; break;
     88                 case 11: sum += 304; break;
     89                 case 12: sum += 334; break;
     90             }
     91             //当年是闰年,且月份大于2,天数加1
     92             if(SN==true && month>2)
     93             {
     94                 sum++;
     95             }
     96             //这里天数加1,是应为前面天数为当月前的总天数,而我们要得到的是当月第一天的星期对应数值
     97             return (sum + 1) % 7;
     98         }
     99 
    100         //判断今年是不是闰年
    101         static bool LeapYear(int year)
    102         {
    103             if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
    104             {
    105                 return true;
    106             }
    107             else
    108             {
    109                 return false;
    110             }
    111         }
    112         
    113 
    114     }
    115 }
    完整代码
  • 相关阅读:
    Oracle exp/imp导出导入命令及数据库备份 (转载)
    多表初始化
    调用别的窗体
    修复k8s内存泄露问题
    如何高效的学习(转)
    Ansible11:变量详解【转】
    沟通的方式方法
    shell中的循环及条件判断
    Tomcat参数优化
    将DataReader转化为DataTables的一个简单实现
  • 原文地址:https://www.cnblogs.com/pengyouqiang88/p/5023942.html
Copyright © 2020-2023  润新知