주석좀,. 중요한 부분이라두 요#include<stdio.h>
int play(int year, int month, int day);
void main()
{
int year, month, day, days;
char day7[7][7]={"월요일", "화요일", "수요일", "목요일", "금요일", "토요일","일요일"};
printf("년도를 입력하세요 : ");
scanf("%d", &year);
while(month >12 || month <1)
{
printf("월을 입력하세요 : ");
scanf("%d", &month);
}
while(1){
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
printf("1~31일 중에 입력하세요 : ");
scanf("%d", &day);
if(day <= 31) break;
}
else if(month==4||month==6||month==9||month==11)
{
printf("1~30일 중에 입력하세요 : ");
scanf("%d", &day);
if(day <= 30) break;
}
else if(month==2)
{
if(year%4 == 0 && year%100 !=0 || year%400 == 0)
{
printf("윤달입니다. 1~29일 중에 입력하세요 : ");
scanf("%d", &day);
if(day <= 29) break;
}
printf("1~28일 중에 입력하세요 :");
scanf("%d", &day);
if(day <= 28) break;
}
}
days = play((year-1),month,day);
printf("%d년 %d월 %d일의 요일은 ", year, month, day);
puts(day7[days]);
}
int play(int year, int month, int day)
{
int miner=0, plus=0, result, i, a=0;
if(year)
{
for(i=1; i <= year; i++)
if(i%4 == 0 && i%100 !=0 || i%400 == 0) plus += 1;
if(plus > 0)
miner += (year*365)+plus;
else miner += year*365;
}
for(i=0; i<month; i++)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) miner += 31;
else if(i==4||i==6||i==9||i==11) miner += 30;
else if(i==2)
{
if((year+1)%4 == 0 && (year+1)%100 != 0 || (year+1)%400 == 0) miner += 29;
else miner += 28;
}
}
miner += day;
result = miner%7;
// printf("%d년 %d월 %d일은 %d일입니다.\n", year+1, month, day, miner);
return result;
}
|