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. ...
随机推荐
- Ngrinder(性能测试工具)-(一)
一.ngrinder介绍 nGrinder 是基于Grinder开源项目,由NHN公司的开发团队进行了重新设计和完善. nGrinder 是一款非常易用,有简洁友好的用户界面 和 controller ...
- SQL SERVER 截断大日志文件
1.改成完整模式下,先完整备份,然后只备份事务日志2. 改成简单模式,然后截断(运行下边示例代码)3.再备份事务日志(观察LDF文件有没有变小)-----收缩大日志 SELECT * FROM sy ...
- 暑假学习五 8.28日 hdfs
文件系统 文件系统:存储和组织数据的方式,实现了数据的存储,分级组织,访问和获取,使用树状结构 数据:数据本身.文件系统元数据:文件大小,最后修改时间....描述性的数据 分布式文件系统 核心属性: ...
- SQL Server创建表,存储过程,function函数脚本规范
--创建新表 /**************************************************************************************** *** ...
- Linux 上安装 jmeter
Linux 下安装 Jmeter,要求先要安装 1.6 版本以上的jdk.所以先说明怎样安装jdk和配置环境变量,本文介绍的是.tar.gz版本的jdk安装. 1.首先在windows上,到官网:ht ...
- React整洁的代码的一些原则
1. Model is everything models are the heart of your app. If you have models separated from th rest ...
- SQLServer遇到的问题解决方案(6月9日)
一.判定两个浮点数数值是否相等 对比数据类型为浮点数的数据时,因为浮点数精度问题,当判断两个数值是否相等时往往会出现错误的结果,如下图: 解决方案:一个比较好的解决方案是设定一个精度,通过判定两个值差 ...
- 29 Django自定义模板功能
在相应的app文件夹中,创建templatetags文件夹,必须是templatetags文件夹命名: 注意:templatetags文件夹中必须要有__init__.py文件 jd.py: from ...
- Mac下如何使用EVE-NG的telnet客户端和wireshark抓包
当我没有安装SecureCRT,点击启动的设备,弹出使用终端打开,但是由于eve中telnet使用的url是telnet xx.xx.xx.xx:xxxx 的形式,其在终端app中不能正常工作,tel ...
- chap3第三小组总结
本周我们第三小组在张庆老师的带领下,走向编程的新一扇大门--分支结构. 我们第三小组是线下聚在一起学习,这样可以使我们的学习效率大大提高,我们在线下学习可以让我们的小组长更方便的指导我们的学习 ...