C#实现控制台打印年历
C#实现控制台打印年历
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 namespace test2._17
8 {
9 internal class Program
10 {
11 #region C#实现控制台打印年历
12 /**
13 * 1.在控制台中实现年历的方法
14 * 调用12遍历实现月历
15 * 2.在控制台中实现阅历的方法
16 * 显示表头 Console.WriteLine("日\t一\t二...")
17 * 计算当月一日星期数,输出空白(\t)
18 * Console.WriteLine(\t);
19 * 计算当月天数,输出1\t2\t...
20 * 每逢6换行
21 * 3.根据年月日,计算星期数
22 * 4.计算指定月份的天数
23 * 5.判断闰年的方法:
24 * 2月闰年29天 平年28天
25 * 年份能被4整除但是不能被100整除
26 * 年份被400整除
27 */
28
29 ///<summary>
30 ///根据年月日,计算星期数的方法
31 /// </summary>
32 /// <param name="year">年</param>
33 /// <param name="month">月</param>
34 /// <param name="day">天</param>
35 private static int GetWeekByDay(int year,int month,int day)
36 {
37 DateTime dt = new DateTime(year,month,day);
38 return (int)dt.DayOfWeek;
39 }
40 /// <summary>
41 /// 判断闰年
42 /// </summary>
43 /// <param name="year">月</param>
44 private static bool IsLeapYear( int year)
45 {
46 return(year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
47 }
48 /// <summary>
49 /// 获取一个月的天数
50 /// </summary>
51 /// <param name="year">年</param>
52 /// <param name="month">月</param>
53 /// <returns></returns>
54 private static int GetDayByMonth( int year,int month)
55 {
56 if (month < 1 || month > 12) return 0;
57 switch (month)
58 {
59 case 2:
60 /*if (IsLeapYear(year))
61 return 29;
62 else
63 return 28;*/
64 return IsLeapYear(year) ? 29 : 28;
65 case 4:
66 case 6:
67 case 9:
68 case 11:
69 return 30;
70 default:
71 return 31;
72
73 }
74 }
75 /// <summary>
76 /// 输出月历
77 /// </summary>
78 /// <param name="year">年</param>
79 /// <param name="month">月</param>
80
81 private static void PrintMonthCalendar(int year, int month)
82 {
83 //1.显示表头
84 Console.WriteLine("{0}年{1}月", year, month);
85 Console.WriteLine("日\t一\t二\t三\t四\t五\t六");
86 //2.计算每个月的1号是星期几
87 int week = GetWeekByDay(year, month, 1);
88 for(int i=0; i<week; i++)
89 Console.Write("\t");
90
91 //3.根据当月总天数,显示日
92 int days=GetDayByMonth(year, month);
93 for(int i = 1; i <= days; i++)
94 {
95 Console.Write(i+"\t");
96 //4.逢六换行
97 if (GetWeekByDay(year, month, i) == 6)
98 Console.WriteLine();
99 }
100 }
101 private static void PrintYearCalendar(int year)
102 {
103 for(int i=1; i<=12; i++)
104 {
105 PrintMonthCalendar(year, i);
106 Console.WriteLine();
107 }
108 }
109 #endregion
110
111 static void Main()
112 {
113 Console.WriteLine("请输入年份:");
114 int year = int.Parse(Console.ReadLine());
115 PrintYearCalendar(year);
116 }
117 }
118 }
C#实现控制台打印年历的更多相关文章
- 关于在Xcode控制台打印的注意点
注意!!在控制台中打印语句的返回值,这句代码也算是被执行过了一次 比如在下列代码的if语句执行之前,现在控制台打印 [_dataBaseexecuteUpdate:createSql] 的布尔值 if ...
- mybatis3.2.3+spring3 控制台打印sql解决办法
学习mybatis的时候遇到打印不出sql 的问题,在这里做个总结: 1:首先log4j.properties这样配置: log4j.rootLogger=DEBUG,console,R log4j. ...
- myeclipse 控制台打印空指针 ,黏贴控制台sql到plsql有结果集,异常处理
信用公司框架,不够熟悉. 在完成嗲点登录后,写动态页面是遇到,了问题:myeclipse 控制台打印空指针 ,黏贴控制台sql到plsql有结果集,异常处理. 最后大神给看,在接口实现重写的方法里返回 ...
- VS2010-win32下cocos2dx控制台打印的方法
在xcode中 直接使用printf 或者 cout<<""<<endl;可以直接在控制台打印 但是在VS2010 却死活不好用 真郁闷 ------ ...
- node 在控制台打印有色彩的输出
在学习 node 过程中,因为没有找到有断点的调试方法,只能退而次之,在控制台打印调试. 但整个控制台的输出都是一种颜色,有时候很难找到自己需要的信息,这时,有颜色的打印就会帮上很大的忙. conso ...
- Spring Boot使用AOP在控制台打印请求、响应信息
AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等. AOP简介 AOP全称Aspect Oriented Programming,面向切面,AOP主要实现的 ...
- Javascript控制台打印Object对象
Javascript控制台打印Object对象 做项目的时候遇到一个问题,在调试代码时需要打印对象来查看具体数值,想了各种方法也没有实现,最后查资料知道了可以使用JSON.stringify()将ob ...
- vc++2010如何新建项目并在控制台打印helloworld
关于写c++使用什么集成开发环境的问题其实挺纠结的.我找了好久找到codeblocks,发现这款IDE还是最适合用在最标准的c++语法环境中.其实先前装过vs2015旗舰版,但是这款软件太大了,非常消 ...
- Intellij IDEA 2017 控制台打印换行
Intellij IDEA 2017 控制台打印的内容超过屏幕宽度了,请问怎么自动换行? 记得重启idea
- Spring Boot使用Log4j Implemented Over SLF4J生成日志并在控制台打印
Spring Boot设置切面,执行方法的时候在控制台打印出来,并生成日志文件 引入依赖: <!--日志--> <dependency> <groupId>org. ...
随机推荐
- C#中的ReferenceEquals、Equals以及==
https://www.cnblogs.com/ArtofDesign/p/3615212.html C#中有一共有四种相等性判断方法: //Object中定义的三个方法 public stati ...
- NVI手法实现Template Method设计模式
- node-sass低版本与高版本的node会有兼容性问题,导致安装失败
node版本v14.18.1 node-sass版本v4.13.0 Python 2.7.18
- 遮罩DIV遮挡住下面元素 下面元素如何触发响应点击事件
遮罩DIV{ pointer-events: none; }
- 基础篇之Markdown基础语法
标题 1. # + 空格 + 标题名字 → 一级标题 2. ## + 空格 + 标题名字 → 二级标题 3. ### + 空格 + 标题名字 → 三级标题 ...... 6.###### + 空格 + ...
- py打包工具
库地址: auto-py-to-exe https://pypi.org/project/auto-py-to-exe/ Gooey https://pypi.org/project/Gooey/ 为 ...
- spring boot读取本地文件
File file = ResourceUtils.getFile("classpath:face/1112.txt"); InputStream inputStream = ne ...
- 计算2-expr命令举例
一.expr命令 1.语法和功能 只能用于整数运算和字符串长度.匹配等运算处理 expr 2 + 2 expr 2 - 2 expr 2 \* 2 expr 2 / 2 i=5;i=`expr $1 ...
- DOSBox进行文件操作
1.使用DOSBox进行汇编语言的学习 2.输入edit进行asm文件编辑,保存后输入masm 文件名.asm,进行编译:输入link 文件名进行连接:输入debug 文件名.exe进行执行,并进行调 ...
- LeetCode系列之 (JavaScript) => 66. 加一
题目描述: 解题思路分析: 模拟十进制: 分析有几种情况,按情况来定 不同解法: /** * @param {number[]} digits * @return {number[]} */ // v ...