함수를 하나더 사용. 코드이해를 증가시키기위해서...
~cpp
#include<iostream>
using namespace std;
bool isYunYear(int x); // 윤년인지 여부를 판별
int monthDays(int x,int y); // 월의 일수를 계산하는 함수
int getMonthWeekDay(int x, int y);
int main()
{
int year, month; // year,month는 입력받은 년,월
cin >> year >> month; // year 은 알고 싶은 년도, month 는 알고 싶은 달.
int yunYear4Year = year / 4;
int yunYear100Year = year / 100;
int yunYear400Year = year / 400;
int yunYearTotal = yunYear4Year - yunYear100Year + yunYear400Year;
int weekDay = (year + yunYearTotal) % 7; // (year+z)%7은 년의 1월의 요일
for(int i = 0 ; i < month-1 ; i++)
{
getMonthWeekDay(weekDay,monthDays(year,i+1)%7); // 입력한 월의 요일을 구한다.
}
cout<<"일"<<"\t"<<"월"<<"\t"<<"화"<<"\t"<<"수"<<"\t"<<"목"<<"\t"<<"금"<<"\t"<<"토"<<endl;
for(i=0; i<weekDay; i++)
cout << " \t";
for(i=0 ; i<monthDays(year,month); i++)
{
cout << i+1 << "\t";//날짜를 순서대로 출력
weekDay = weekDay+1;
if(weekDay==7)//0~6 을 일~토 라고 했을때 토요일값을 입력하면 한칸 뛰운다.
{
weekDay=0;
cout << endl;
}
}
cout<<endl;
return 0;
}
bool isYunYear(int x)//윤년을 계산하는 함수
{
if(x%4 ==0)
{
if(x%100 ==0)
{
if(x%400 ==0)
return true;
return false;
}
return true;
}
return false;
}
int monthDays(int x, int y)//월의 일수를 계산하는 함수
{
if( y==1 || y==3 || y==5 || y==7 || y==8 || y== 10 || y==12)
return 31;//1월 3월....은 31일 까지 있다.
else if( y==2)//2월은 29일 또는 28일...
{
if(isYunYear(x)==true)
return 29;
return 28;
}
else//그외 월은 모두 30일
return 30;
}
int getMonthWeekDay(int x, int y)
{
return x=(x+y) %7;
}
곽세환,
조재화