1. 程式人生 > >輸出結果不對,求大神幫我找一下bug

輸出結果不對,求大神幫我找一下bug

用戶輸入 parse utm write mar r+ 回車 2018年 for

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// 打印1993年到2018年每月12月7日是星期幾
for (int year = 1993; year <= 2018; year++)
{
Console.WriteLine(year + "年的生日是星期:" + GetDayOfWeek(year, 12, 7));
}
Console.WriteLine();
// 打印用戶輸出的年份每個月的日歷

int inputYear = GetUserInputYear();
for (int i = 1; i <= 12; i++)
{
Console.WriteLine(inputYear + "年" + i + "月");
PrintCalendar(inputYear, i, 1);
Console.WriteLine();
}
// 打印用戶輸入的年,月份日歷
while (true)
{
int year2 = GetUserInputYear();
int month2 = GetUserInputMonth();
PrintCalendar(year2, month2, 1);
Console.WriteLine();
Console.Write("按回車鍵繼續,退出輸入Y後按回車鍵:");
if (Console.ReadLine() == "Y")
{
break;
}
Console.Clear();
}

Console.ReadLine();
}
#region 判斷是不是閏年

static bool IsLead(int year)
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
return true;
}
return false;
}
#endregion

#region 從1900年至year-1年的天數
static int GetDayOfYear(int year)
{
int dayOfYear = 0;
for (int i = 1900; i < year; i++)
{
if (IsLead(year))
{
dayOfYear += 366;
}
else
{
dayOfYear += 365;
}
}
return dayOfYear;
}
#endregion

#region year年1月至month-1月的天數

static int GetDayOfMonth(int year, int month)
{
int getDayOfMonth = 0;
for (int i = 1; i < month; i++)
{
if(i == 2)
{
if (IsLead(year))
{
getDayOfMonth += 29;
}
else
{
getDayOfMonth += 28;
}
}
else if (i <= 7 && i % 2 != 0 || i > 7 && i % 2 == 0)
{
getDayOfMonth += 31;
}
else
{
getDayOfMonth += 30;
}
} return getDayOfMonth;

}
#endregion

#region 計算今天是該年的第幾天

static int GetDayOfOneYear(int year,int month,int day)
{
return GetDayOfMonth(year, month) + day;
}
#endregion

#region 計算1900年1月日至現在一共經過了多少天
static int GetDayOfAll(int year, int month, int day)
{
return GetDayOfYear(year) + GetDayOfOneYear(year, month, day) - 1;
}
#endregion

#region 計算今天是今年的星期幾
static int GetDayOfWeek(int year, int month, int day)
{
return GetDayOfAll(year,month,day) % 7 + 1;
}
#endregion

#region 判斷month月有多少天
static int GetDayOfOneMonth(int year,int month)
{
int days;
if(month == 2)
{
if(IsLead(year))
{
days = 29;
}
else
{
days = 28;
}
}
else if(month <= 7 && month % 2 != 0 || month % 400 == 0)
{
days = 31;
}
else
{
days = 30;
}
return days;
}
#endregion

#region 用戶輸入的年份
/// <summary>
/// 得到用戶輸入的年份
/// </summary>
/// <returns></returns>
static int GetUserInputYear()
{
int year;
while (true)
{
Console.Write("請輸入年份(1900-2100):");
year = int.Parse(Console.ReadLine());
if (year >= 1900 && year <= 2100)
{
break;
}
}
return year;
}
#endregion

#region 用戶輸入的月份
static int GetUserInputMonth()
{
int month;
while (true)
{
Console.Write("請輸入月份(1-12):");
month = int.Parse(Console.ReadLine());
if (month > 0 && month <= 12)
{
break;
}
}
return month;
}
#endregion

#region 控制臺日歷
/// <summary>
/// 打印一個日歷
/// </summary>
/// <param name="year"></param>
/// <param name="month"></param>
static void PrintCalendar(int year, int month, int day)
{
List<string> nums = new List<string>();
int dayOfWeek = GetDayOfWeek(year, month, day);
int space = dayOfWeek - 1;
for (int i = 0; i < space; i++)
{
nums.Add("");
}
// 算天數,把字符串湊齊
int days = GetDayOfOneMonth(year, month);
for (int i = 1; i <= days; i++)
{
nums.Add(i.ToString());
}
Console.Write("一\t二\t三\t四\t五\t六\t日");
for (int i = 0; i < nums.Count; i++)
{
Console.Write(nums[i] + "\t");
if (i % 7 == 0)
{
Console.WriteLine();
}
}
}
#endregion
}
}

輸出結果不對,求大神幫我找一下bug