综合练习:双排月历

简介:
将两个月历并排打印
如果你可以独立完成,那说明你对编程已经有了一定的控制能力了

1 public   static   void  Main( string [] args)
2   {
3
4
5 System.DateTime dt1 = new System.DateTime(200411);
6 System.DateTime dt2 = new System.DateTime(200421);
7 System.DateTime tmpdt;
8 int tmpMonth1;//记录当前要操作的单月
9 int tmpMonth2;//记录当前要操作的偶月
10 int change = 0;//0为单月,1为偶月
11 char[] weekChar = "日一二三四五六".ToCharArray();
12
13 //输出标题,每个标题之间空2个间隔,每个月之间空4个间隔
14 for (int j = 0; j <= 1; j++)
15 {
16 for (int i = 0; i <= weekChar.Length - 1; i++)
17 {
18 System.Console.Write("{0} ", weekChar[i]);
19 }

20 System.Console.Write(" ");
21 }

22 System.Console.WriteLine();
23 tmpMonth1 = dt1.Month; tmpMonth2 = dt2.Month;
24 tmpdt = dt1;//将要打印的月交给打印控制
25
26 do//控制月
27 {
28 //定位每月的第一个打印位置(跳出需要打印月的不要打印)
29 if (tmpdt.Day == 1)
30 {//如果是当前控制月的第一天,先需要打印定位
31 if (tmpMonth1 == dt1.Month && tmpMonth2 == dt2.Month)
32 {
33 for (int i = 0; i <= (int)tmpdt.DayOfWeek - 1; i++)
34 {
35 System.Console.Write("{0}{1}"" "" ");
36 }

37 }

38 else//不是本月就不要打了
39 {
40 System.Console.Write("");
41 }

42 }

43
44 //打印每一天
45 if (tmpdt.Day < 10)//如果日期<10,在前面多打一个空格
46 {//正常情况正常打印
47 if (tmpMonth1 == dt1.Month && tmpMonth2 == dt2.Month)
48 {
49 System.Console.Write(" {0} ", tmpdt.Day);
50 }

51 else
52 {//否则不打印日期,只打印一个占位间隔
53 if (change == 0 && tmpMonth1 != dt1.Month)
54 {
55 System.Console.Write(" {0} "" ");
56 }

57 if (change == 1 && tmpMonth2 != dt2.Month)
58 {
59 System.Console.Write(" {0} "" ");
60 }

61 }

62 }

63 else
64 {
65 System.Console.Write("{0} ", tmpdt.Day);
66 }

67
68 //处理周六的情况
69 if (tmpdt.DayOfWeek == System.DayOfWeek.Saturday)
70 {//打印周六后是打印月间隔(单月)还是换行(偶月),同时收回打印控制
71
72 if (change == 0)
73 {//单月
74 dt1 = tmpdt.AddDays(1);
75 System.Console.Write(" ");//月间隔
76 tmpdt = dt2;//交换控制
77 }

78 else
79 {//双月
80 dt2 = tmpdt.AddDays(1);
81 System.Console.WriteLine("");//换行
82 tmpdt = dt1;//交换控制
83 }

84 change = 1 - change;//切换标志
85 }

86 else//仅仅转到下一天
87 {
88 tmpdt = tmpdt.AddDays(1);
89 if (change == 0)
90 { dt1 = tmpdt; }
91 else
92 { dt2 = tmpdt; }
93 }

94
95 //交换单偶月
96
97 }

98 while (tmpMonth1 == dt1.Month || tmpMonth2 == dt2.Month);//单月和偶月都结束
99
100 System.Console.WriteLine();
101
102
103
104
105
106
107
108
109
110
111 }


本文转自shyleoking 51CTO博客,原文链接:http://blog.51cto.com/shyleoking/806890
相关文章
|
Ubuntu Linux 数据安全/隐私保护
Win10安装Linux,无需安装虚拟机版
win10,linux,虚拟机,ubuntu
1820 0
Win10安装Linux,无需安装虚拟机版
|
4月前
|
存储 数据安全/隐私保护 开发者
Python深浅拷贝全解析:从原理到实战的避坑指南
在Python开发中,深浅拷贝是处理对象复制的关键概念。直接赋值仅复制引用,修改副本会影响原始数据。浅拷贝(如切片、copy方法)创建新容器但共享嵌套对象,适用于单层结构或需共享子对象的场景;而深拷贝(copy.deepcopy)递归复制所有层级,确保完全独立,适合嵌套结构或多线程环境。本文详解二者原理、实现方式及性能考量,帮助开发者根据实际需求选择合适的拷贝策略,避免数据污染与性能浪费。
263 1
|
4月前
|
供应链 API 区块链
从库存周转率提升30%看京东API如何重构供应链效率
京东API分类全景图展示了其从商品管理到生态协同的技术中台架构,涵盖商品、交易、供应链及家政服务等多维度接口,助力电商数字化转型。
|
缓存 Java Android开发
Android Gradle Plugin 源码解析(上)
一、源码依赖 本文基于: android gradle plugin版本: com.android.tools.build:gradle:2.
2280 0
|
Java Maven
查找maven中的groupId,artifactId,version等信息的方式
可以查看:http://search.maven.org/   输入要想找的东西 
2446 0
|
SQL 关系型数据库 MySQL
|
数据安全/隐私保护
阿里云注销备案流程及注销备案常见问题与解答
网站域名如果不用了或者转移给他人阿里云百科网建议已经备案的域名及时注销备案,因为域名的备案信息还是你的,阿里云百科网分享注销备案的流程和方法及注销备案的常见问题与解答: 注销备案方法流程 相对于备案来讲,注销备案就简单的多了(可以参考官方文档:注销备案流程 - 阿里云),阿里云百科网以注销阿里云备案为例: 注销分类 网站备案注销有两类,即注销主体和注销网站: 注销主体:注销在阿里云备案的主体信息,并注销该主体下备案的所有网站服务; 注销网站:注销需要停止服务的网站备案信息,主体备案信息保留。
9912 0
|
域名解析 网络协议 调度
那些年移动App域名解析踩过的坑
App出现域名劫持、解析结果修改生效慢、跨运营商跨地域访问问题?阿里云HTTPDNS可以解决这类问题。
10600 2
|
算法
《优化阵列信号处理》学习笔记(第四章)
注:目前因系统问题,故将本文中的公式全部删除,具体请见pdf版本或访问:http://www.yushuai.xyz/2019/10/16/4442.html 第四章:波束稳健性分析 在实际中,由于各种误差(如观察方向误差、阵型标定误差、通道幅度与相位误差等)的影响,造成导向向量存在误差;另外,由于接收数据协方差矩阵无法精确计算,只能通过接受数据进行估计,也不可避免的存在估计误差。
1825 0