|
¤³¤ì¤Ç¤É¤¦¤Ç¤·¤ç¤¦¤«¡£
/* ¥¤¥ó¥¯¥ë¡¼¥É½èÍý */
#include <stdio.h>
#include <stdlib.h>
/* ´Ø¿ô¥×¥í¥È¥¿¥¤¥×Àë¸À */
int date(int y, int m, int d);
int isexistthirty1st(int m);
void input(int *y, int *m, int *d);
void disp_2(int y, int m, int d);
/* ¥á¥¤¥ó´Ø¿ô */
int main(void)
{
/* ³ÆÊÑ¿ôÀë¸À */
int y, m, d; /* À¾Îñǯ,·î,Æü */
/* ÍËÆü¤Îɽ¼¨ */
/* ÆþÎϥǡ¼¥¿¥Á¥§¥Ã¥¯ */
input(&y, &m, &d);
/* ɽ¼¨2 */
disp_2(y, m, d);
getchar();
return 0;
}
/*------------*/
/* ·×»»´Ø¿ô2 */
/*------------*/
int date(int y, int m, int d)
{
if (m == 1 || m == 2) {
y--;
m += 12;
}
/* Zeller¤Î¸ø¼° */
return (y + y / 4 - y / 100 + y / 400 + (int)((13.0 * m + 8) / 5 + d)) % 7;
}
/*------------*/
/* ·×»»´Ø¿ô3 */
/*------------*/
int isexistthirty1st(int m)
{
int i, month[] = {1, 3, 5, 7, 8, 10, 12};
for (i = 0; i < 7; i++)
if (m == month[i]) return 1;
return 0;
}
/*--------------------------*/
/* ÆþÎϥǡ¼¥¿¥Á¥§¥Ã¥¯´Ø¿ô */
/*--------------------------*/
void input(int *y, int *m, int *d)
{
int leap;
char buf[128];
/* À¾Îñǯ¤È·î¤ÎÆþÎÏ */
printf("À¾Îñǯ¤È·î¤ÈÆü¤òÆþÎÏ:");
/* ÆþÎϥǡ¼¥¿¥Á¥§¥Ã¥¯ */
while (1) {
scanf("%d %d %d", y, m, d);
gets(buf); /* ¥Ð¥Ã¥Õ¥¡¤Ë»Ä¤Ã¤¿Ê¸»ú¤ò¼è¤ê½ü¤¯ */
/* 30Æü¤Þ¤Ç¤·¤«¤Ê¤¤·î¤Ë31Æü°Ê¾å¤òÆþ¤ì¤¿¾ì¹ç¡¢¹¹¤Ë
/* ¹¹¤Ë±¼Ç¯°Ê³°¤Î¾ì¹ç¤Ï2·î29Æü¤È¤¤¤¦ÆþÎϤò¥¨¥é¡¼¤Ë¤¹¤ë */
leap = (*y % 4 == 0) && (*y % 100 != 0) || (*y % 400 == 0);
if ((*y >= 1583 && *y <= 3999) && (*m >= 1 && *m <= 12) && (isexistthirty1st(*m)) ? *d <= 31 : *d <= 30)
if (!leap) {
if (*m != 2 || *d >= 1 && *d < 29) break;
} else /* ±¼Ç¯ */
if (*m != 2 || *d >= 1 && *d < 30) break;
printf("ÆþÎÏ¥¨¥é¡¼!\n");
printf("ºÆÆþÎÏ:");
}
}
/*----------*/
/* ɽ¼¨2 */
/*----------*/
void disp_2(int y, int m, int d)
{
int k; //ÍËÆü
static char *w[] = { "Æü","·î","²Ð","¿å","ÌÚ","¶â","ÅÚ" };//ÍËÆü¥³¡¼¥É
/* ·×»»¢ */
k = date(y, m, d);
printf("À¾Îñ%dǯ%d·î%dÆü¤Ï%sÍËÆü¤Ç¤¹\n", y, m, d, w[k]);
}
|