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++ 11 std::mem_fn
mem_fn 想到member function 成员函数 这还真就是用来调用成员函数的 普通的函数我们通过函数指针可以调用,但对于成员函数的调用稍微复杂一点,需要对象,也即this指针 因为成员函数 ...
- spring-boot 引入redis
1.引入redis <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...
- 【2】locust性能测试原理分析+登录测试脚本+总结
login_per_test1.py #对登录功能进行单点性能测试(一组测试数据)#发送首页请求,通过locust进行性能测试from locust import HttpLocust,task,T ...
- python学习●错误点●expected an indented block
报错:expected an indented block 翻译:缩进错误 因为python判断句无{},所以要缩进空格代表优先级.
- Docker之RabbitMQ保姆级别安装
Docker之RabbitMQ保姆级别安装: 如果觉得样式不好:跳转即可 http://www.lifengying.site/(md文件复制过来有些样式会不一样) 学英语网站项目:自己先保证Redi ...
- 2022-4-8内部群每日三题-清辉PMP
1.在创建最小可行产品(MVP)时,哪种方法至关重要? A.冒烟测试. B.演示. C.按版本发布. D.客户访谈. 2.敏捷项目团队决定修改使用中的测试过程,这一决定在哪一次会议上产生的? A.sp ...
- NSSM 软件参数使用教程
NSSM 一款可以自定义为软件安装守护进程的软件 NSSM: The non-sucking service manager Version 2.24-101-g897c7ad 64-bit, 201 ...
- .netcore 跨域问题
CORS(跨域资源共享)是一种W3C标准,允许服务器放宽同源策略.使用CORS,服务器可以在显式允许某些跨域请求时拒绝其他跨域请求.CORS是相比其他跨域技术(比如JSONP)更安全.更灵活. ASP ...
- Python 删除文件及文件夹
2种方式: [不删除给定的目录] path1 = "D:\\dev\\workspace\\python\\pytestDemo\\222" def del_filedir(pat ...
- linux火狐添加flash插件
从官网上 adobe flash player 全版本通用安装 找到 linux 版本的 .gz 包, 复制下载链接 linux命令 su - cd /tmp wget -P /tmp https: ...