您的位置:首页 > 编程语言 > C#

【常用】C#万年历代码

2015-08-08 20:43 633 查看
public class WanNianLi
{
int year;//年份
int month;//月份
int days = 31;//默认31天,所以判断时直接除了4,6,9,11,2,
/*
* 显示菜单
*/
public void menu()
{
Console.WriteLine("请输入年");
year = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入月份");
month = Convert.ToInt32(Console.ReadLine());

switch (month)
{
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
// 如果 年能被4整除 但不能被100 整除 + 年被400整除
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
days = 29;
break;
}
else
{
days = 28;
}
break;
default:
days = 31;
break;
}
show();
}

public void show()
{
// 1900-1-1 星期一 1900-1-9(规定)
String[] weeks = { "日", "一", "二", "三", "四", "五", "六" };
for (int i = 0; i < weeks.Length; i++)
{
Console.Write(weeks[i] + "\t");
}
Console.Write("\n==================================\n");
int chaDays = 0;
for (int i = 1900; i < year; i++)
{
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
{
chaDays += 366;// 闰年366天
continue;
}
chaDays += 365;
}
//上面方法计算出从1900年1月1日到输入的年,下面方法为把输入的月加上
//上一个for加完chaDays,下面的for循环继续在chaDays上累加
//这里注意是for循环的把每个月的累加上
for (int i = 1; i < month; i++)
{
switch (i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
chaDays += 31;
break;
case 4:
case 6:
case 9:
case 11:
chaDays += 30;
break;
case 2:
// 如果 年能被4整除 但不能被100 整除 + 年被400整除
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
chaDays += 29;
}
else
{
chaDays += 28;
}
break;
}
}

//         Console.WriteLine("差的天数为:" + chaDays);

int weekOfDay = (chaDays + 1) % 7;//加一的原因是周日为数组中的第一个
//        Console.WriteLine(weekOfDay);
for (int i = 0; i < weekOfDay; i++)
{
Console.Write("\t");//空格补位
}
for (int i = 1; i <= days; i++)
{
Console.Write(i + "\t");
if ((i + weekOfDay) % 7 == 0)
{//每一行 七个就换行
Console.WriteLine();
}
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: