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#实现控制台打印年历的更多相关文章

  1. 关于在Xcode控制台打印的注意点

    注意!!在控制台中打印语句的返回值,这句代码也算是被执行过了一次 比如在下列代码的if语句执行之前,现在控制台打印 [_dataBaseexecuteUpdate:createSql] 的布尔值 if ...

  2. mybatis3.2.3+spring3 控制台打印sql解决办法

    学习mybatis的时候遇到打印不出sql 的问题,在这里做个总结: 1:首先log4j.properties这样配置: log4j.rootLogger=DEBUG,console,R log4j. ...

  3. myeclipse 控制台打印空指针 ,黏贴控制台sql到plsql有结果集,异常处理

    信用公司框架,不够熟悉. 在完成嗲点登录后,写动态页面是遇到,了问题:myeclipse 控制台打印空指针 ,黏贴控制台sql到plsql有结果集,异常处理. 最后大神给看,在接口实现重写的方法里返回 ...

  4. VS2010-win32下cocos2dx控制台打印的方法

    在xcode中  直接使用printf 或者 cout<<""<<endl;可以直接在控制台打印 但是在VS2010 却死活不好用   真郁闷 ------ ...

  5. node 在控制台打印有色彩的输出

    在学习 node 过程中,因为没有找到有断点的调试方法,只能退而次之,在控制台打印调试. 但整个控制台的输出都是一种颜色,有时候很难找到自己需要的信息,这时,有颜色的打印就会帮上很大的忙. conso ...

  6. Spring Boot使用AOP在控制台打印请求、响应信息

    AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等. AOP简介 AOP全称Aspect Oriented Programming,面向切面,AOP主要实现的 ...

  7. Javascript控制台打印Object对象

    Javascript控制台打印Object对象 做项目的时候遇到一个问题,在调试代码时需要打印对象来查看具体数值,想了各种方法也没有实现,最后查资料知道了可以使用JSON.stringify()将ob ...

  8. vc++2010如何新建项目并在控制台打印helloworld

    关于写c++使用什么集成开发环境的问题其实挺纠结的.我找了好久找到codeblocks,发现这款IDE还是最适合用在最标准的c++语法环境中.其实先前装过vs2015旗舰版,但是这款软件太大了,非常消 ...

  9. Intellij IDEA 2017 控制台打印换行

    Intellij IDEA 2017 控制台打印的内容超过屏幕宽度了,请问怎么自动换行? 记得重启idea

  10. Spring Boot使用Log4j Implemented Over SLF4J生成日志并在控制台打印

    Spring Boot设置切面,执行方法的时候在控制台打印出来,并生成日志文件 引入依赖: <!--日志--> <dependency> <groupId>org. ...

随机推荐

  1. Java 04-基础 数据类型转换 自动类型转换+强制类型转换

    1.数据类型自动转换 规则1:如果一个操作数为double型,则整个表达式提示至double型 规则2:满足自动类型转换条件,   两种类型要兼容,数值类型(整数和浮点)相互兼容   目标类型取值大于 ...

  2. 结构体struct

    在 C# 中,结构体是值类型数据结构.它使得一个单一变量可以存储各种数据类型的相关数据.struct 关键字用于创建结构体. 结构体是用来代表一个记录.假设您想跟踪图书馆中书的动态.您可能想跟踪每本书 ...

  3. 2022-3-15内部群每日三题-清辉PMP

    1.一家公司被一家大公司收购,这家大公司希望把重点放在其核心产品和服务上.处于规划阶段的所有项目都正在进行修定,以包含新的变更管理程序.一个项目的项目经理需要持续的高级输入,以确保与新的组织结构保持一 ...

  4. 【SQL Server】获取表格插入的id(二)——newID()

    现在有一个需求,插入api调用日志表.然后,发起HTTP请求()请求时,需要带入日志表的id). 简化无关的添加,SQL Server表格设计如下: CREATE TABLE mylog ( id I ...

  5. vue3封装input组件

    使用了2种方法去封装input组件(.vue与.jsx) 代码如下 父组件: <template> <div> <h1>input组件封装</h1> & ...

  6. LayUI 简单的全选和反选小例子

    比较简单实用,直接上代码,主要就是  lay-filter="ischange"   触发事件和  checkbox 的 class="ids" 对上就行: H ...

  7. [自用初学]c++值传递和引用传递/ *&/ string

    https://baijiahao.baidu.com/s?id=1702573193376441989&wfr=spider&for=pc 总结: 1.函数参数传递主要分为值传递和& ...

  8. bert一些思考

    bert结构 首先是embdding lookup,[batch * seq]-->[batch, seq, hidden] 然后是加个mask embdding和type embdding和p ...

  9. element-ui的确认消息弹框校验;$prompt校验

    this.$prompt('请输入您的姓名', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', inputPattern: /^.+$ ...

  10. 关于在Eclipse中使用EclEmma

    在LAB2中,要求使用EclEmma来统计JUnit测试用例的代码覆盖度.下面就来说说如何进行基本的使用来应付实验(bushi). 在这给出完全体,可以访问下面的网址进行学习. http://www. ...