Biết rằng 1/1/1990 là ngày chủ nhật.
#include<stdio.h>
#include<conio.h>
int demngay(int d, int m, int y)
{
int dd = 0;
if (y - 1990 != 0)
dd = (y - 1990) * 365;
if (m - 1 != 0)
{
for (int i = 1; i <= m - 1; i++)
{
switch (i)
{
case 1:
dd += 31; break;
case 2:
dd += 28; break;
case 3:
dd += 31; break;
case 4:
dd += 30; break;
case 5:
dd += 31; break;
case 6:
dd += 30; break;
case 7:
dd += 31; break;
case 8:
dd += 31; break;
case 9:
dd += 30; break;
case 10:
dd += 31; break;
case 11:
dd += 30; break;
}
}
}
if (d - 1 != 0)
{
dd += d - 1;
}
if (m>2 && ((y - 1990) / 4 != 0))
return dd + (y - 1990) / 4;
return dd;
}
void xemngay(int d, int m, int y)
{
int x = demngay(d, m, y), dem = 0;
if (x % 7 == 0)
{
printf(" day la ngay chu nhat");
return;
}
do
{
dem++;
x--;
if (x % 7 == 0)
break;
} while (1);
switch (dem)
{
case 1:
printf(" day la ngay thu 2"); break;
case 2:
printf(" day la ngay thu 3"); break;
case 3:
printf(" day la ngay thu 4"); break;
case 4:
printf(" day la ngay thu 5"); break;
case 5:
printf(" day la ngay thu 6"); break;
case 6:
printf(" day la ngay thu 7"); break;
}
}
void ngaytruoc(int d, int m, int y)
{
if (d != 1)
{
printf("\nNgay truoc do la: %d/%d/%d", d - 1, m, y);
xemngay(d - 1, m, y);
return;
}
switch (m)
{
case 1:
printf("\nNgay truoc do la: 31/12/%d", y - 1);
xemngay(31, 12, y - 1);
return;
case 2:
printf("\nNgay truoc do la: 31/%d/%d", m - 1, y);
xemngay(31, m - 1, y);
return;
case 3:
if ((y - 1990) / 4)
{
printf("\nNgay truoc do la: 29/%d/%d", m - 1, y);
xemngay(29, m - 1,y );
return;
}
printf("\nNgay truoc do la: 28/%d/%d", m - 1, y);
xemngay(28, m - 1, y );
return;
case 4:
printf("\nNgay truoc do la: 31/%d/%d",m-1, y);
xemngay(31, m-1, y );
return;
case 5:
printf("\nNgay truoc do la: 30/%d/%d",m-1, y);
xemngay(30, m-1, y);
return;
case 6:
printf("\nNgay truoc do la: 31/%d/%d", m - 1, y);
xemngay(31, m - 1, y);
return;
case 7:
printf("\nNgay truoc do la: 30/%d/%d", m - 1, y );
xemngay(30, m - 1, y );
return;
case 8:
printf("\nNgay truoc do la: 31/&%d/%d", m - 1, y );
xemngay(31, m - 1, y);
return;
case 9:
printf("\nNgay truoc do la: 31/%d/%d", m - 1, y);
xemngay(31, m - 1, y);
return;
case 10:
printf("\nNgay truoc do la: 30/%d/%d", m - 1, y);
xemngay(30, m - 1, y);
return;
case 11:
printf("\nNgay truoc do la: 31/%d/%d", m - 1, y);
xemngay(31, m - 1, y );
return;
case 12:
printf("\nNgay truoc do la: 30/%d/%d", m - 1, y );
xemngay(30, m - 1, y );
return;
}
}
void ngaysau(int d, int m, int y)
{
switch (d)
{
case 31:
if (m == 12)
{
printf("\nNgay sau do la: 1/1/%d", y + 1);
xemngay(1, 1, y + 1);
return;
}
printf("\nNgay sau do la: 1/%d/%d", m + 1, y);
xemngay(1, m + 1, y);
return;
case 30:
printf("\nNgay sau do la: 1/%d/%d", m + 1, y);
xemngay(1, m + 1, y);
return;
case 28:
if (m != 2) break;
printf("\nNgay sau do la: 1/%d/%d", m + 1, y);
xemngay(1, m + 1, y);
return;
case 29:
if (m != 2) break;
printf("\nNgay truoc do la: 31/%d/%d", m - 1, y);
xemngay(31, m - 1, y);
return;
default: break;
}
printf("\nNgay sau do la: %d/%d/%d", d + 1, m, y);
xemngay(d + 1, m, y);
}
void main(void)
{
int d, m, y;
again:
do
{
printf("\nNhap ngay: ");
scanf("%d", &d);
if (d<1 || d>31)
printf("\nNgay cao nhat la 31 va thap nhat la 1. Nhap lai.");
} while (d<1 || d>31);
do
{
printf("\nNhap thang: ");
scanf("%d", &m);
if (m<1 || m>12)
printf("\nThang cao nhat la 12 va thap nhat la 1. Nhap lai.");
} while (m<1 || m>12);
printf("\nNhap nam: ");
scanf("%d", &y);
printf("\nBan da nhap: %d/%d/%d", d, m, y);
xemngay(d, m, y);
ngaytruoc(d, m, y);
ngaysau(d, m, y);
getch();
goto again;
}
Không có nhận xét nào:
Đăng nhận xét