在控制台输入日期,然后输出日历,用C#编写

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在控制台输入日期,然后输出日历•

public class PrintCalendar {

static void main(String[] args) {

Consol.WriteLine("******************欢迎使用万年历******************"); Consol.Write("\n请选择年份:");

int year = int.Parse(Console.ReadLine());

Consol.Write("\n请选择月份:");

int month = int.Parse(Console.ReadLine());

int days = 0; // 存储当月的天数

boolean isRn;

/* 判断是否是闰年*/

if (year % 4 == 0 && !(year % 100 == 0) || year % 400 == 0) { // 判断是否为闰年

isRn = true; // 闰年

} else {

isRn = false;// 平年

}

/* 计算输入的年份之前的天数*/

int totalDays = 0;

for (int i = 1900; i < year; i++) {

/* 判断闰年或平年,并进行天数累加*/

if (i % 4 == 0 && !(i % 100 == 0) || i % 400 == 0) { // 判断是否为闰年

totalDays = totalDays + 366; // 闰年366天

} else {

totalDays = totalDays + 365; // 平年365天

}

}

/* 计算输入月份之前的天数*/

int beforeDays = 0;

for (int i = 1; i <= month; i++) {

switch (i) {

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

days = 31;

break;

case 2:

if (isRn) {

days = 29;

} else {

days = 28;

}

break;

default:

days = 30;

break;

}

if (i < month) {

beforeDays = beforeDays + days;

}

}

totalDays = totalDays + beforeDays; // 距离1900年1月1日的天数

/* 计算星期几*/

int firstDayOfMonth; // 存储当月第一天是星期几:星期日为0,星期一~星期六为1~6

int temp = 1 + totalDays % 7; // 从1900年1月1日推算

if (temp == 7) { // 求当月第一天

firstDayOfMonth = 0; // 周日

} else {

firstDayOfMonth = temp;

}

/* 输出日历*/

Console.WriteLine("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");

for (int nullNo = 0; nullNo < firstDayOfMonth; nullNo++) {

Console.Write("\t"); // 输出空格

}

for (int i = 1; i <= days; i++) {

Console.Write(i + "\t");

if ((totalDays + i - 1) % 7 == 5) { // 如果当天为周六,输出换行

Console.WriteLine();

}

}

}

}

相关文档
最新文档