code C# in lịch năm theo tháng nhập vào
Trang 1using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace bai_in_lich
{
class Program
{
static void Main(string[] args)
{
long absoluteDay, year, month, day, dayMax, firsDay, dayNumber;
Console.Write("Nhap vao month: ");
month = long.Parse(Console.ReadLine());
Console.Write("Nhap vao year: ");
year = long.Parse(Console.ReadLine());
day = 1;
dayNumber = 0;
dayMax = 0;
for (int i = 1; i < month; i++)
{
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) dayNumber = dayNumber + 31;
if (i == 4 || i == 6 || i == 9 || i == 11) dayNumber = dayNumber + 30;
if ((i == 2) && ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))) dayNumber = dayNumber + 29; // năm nhuận
if ((i == 2) && (!(year % 4 == 0 || year % 100 != 0) || (year % 400 == 0))) dayNumber = dayNumber + 28; // năm không nhuận
}
absoluteDay = dayNumber + 365 * (year - 1) + (year - 1) / 4 - (year - 1) /
100 + (year - 1) / 400; //tính ngày tuyệt đối
firsDay = absoluteDay % 7 + 2; // tìm thứ của ngày đầu tiên của tháng cần in lịch
switch (month) // tính số ngày tối đa của tháng
{
case 1:
case 3:
case 5:
Trang 2case 7:
case 8:
case 10:
case 12: dayMax = 31; break;
case 4:
case 6:
case 9:
case 11: dayMax = 30; break;
case 2:
{
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) dayMax = 29;
else dayMax = 28;
break;
}
}
switch (month)
{
case 1: Console.Write("January "); break;
case 2: Console.Write("February "); break;
case 3: Console.Write("March "); break;
case 4: Console.Write("April "); break;
case 5: Console.Write("May "); break;
case 6: Console.Write("Jun "); break;
case 7: Console.Write("July "); break;
case 8: Console.Write("August "); break;
case 9: Console.Write("September "); break;
case 10: Console.Write("October "); break;
case 11: Console.Write("November "); break;
case 12: Console.Write("December "); break;
}
Console.WriteLine(" ,{0}", year);
Console.WriteLine("Sun\tMon\tTue\tWed\tThu\tFri\tSat");
Console.WriteLine(" -"); for (long j = 1; j < firsDay; j++) Console.Write("\t"); //tìm vị trí của ngày đầu tháng
for (long i = firsDay; i < 8; i++) //in dòng đầu tiên của tháng
{
Trang 3Console.Write("{0}\t", day);
day++;
}
int k = 1;
Console.WriteLine();
for (long i = day; i <= dayMax; i++) // in các dòng còn lại của tháng {
Console.Write("{0}\t", i);
if (k % 7 == 0) Console.WriteLine();
k++;
}
Console.ReadKey();
}
}
}