|
달력을 출력하는 프로그램인데...
내일까지 주석을 달아가야 하거덩여
process1함수라도...주석좀 달아주세여...
특히 이부분(↓)이 이해가 잘 안되거덩요...
b = (totalday%7) + 1;//총 날짜수를 7로 나누어 주를 출력한다.
//200년이 넘어가면 overflow가 나므로 7로 나누었음
#include <stdio.h>
#include <conio.h>
int process1(void);
int selection(void);
void printcalender(int);
int monthend[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int choice, pro1;
int year = 0;
int month = 0;
int day = 0;
void main(void)
{
while(1)
{
choice = selection();
if(choice == 1)
{
pro1 = process1();
printcalender1(pro1);
}
else
{
printf("\n이용해 주셔서 감사합니다.\n");
break;
}
}
}
int selection(void)
{
int a;
do
{
puts("\n\n달력 출력 프로그램 ");
puts("==========================");
puts("\n1.특정 달의 달력 출력하기");
puts("\n2.종료하기");
puts("\n==========================");
printf(" Selection : ");
scanf("%d", &a);
}while(a<1 || a>2);
return a;
}
int process1(void)
{
int totalday, a, b;
printf("\n년도를 입력하세요 : ");
scanf("%d", &year);
printf("\n달을 입력하세요 : ");
scanf("%d", &month);
while(month<1 || month>12)
{
printf("\n1~12월 사이의 숫자를 입력하세요 : ");
scanf("%d", &month);
}
if( (year%4 == 0) && (year%100 !=0) || year%400 == 0)//윤년인지 아닌지 계산
//받아 들인 해가 4나 400으로 나누어 떨어지면 윤년이다
//100으로 나누어 떨어지는 경우는 윤년이 아니다.
monthend[2] = 29;//윤년이면 2월달의 끝날은 29일 이다
else
monthend[2] = 28;//윤년이 아니면 28일 이다.
totalday = (year-1)*365 + (year-1)/4 - (year-1)/100 + (year-1)/400;
//작년 까지의 날 수 계산 하기 위하여 -1을 하였음
for (a=1; a<month; a++)
totalday+=monthend[a];//
b = (totalday%7) + 1;//총 날짜수를 7로 나누어 주를 출력한다.
//200년이 넘어가면 overflow가 나므로 7로 나누었음
return b;
}
void printcalender(int x)
{
int a, b;
printf("\n %d년 %d월 달력 ", year, month);
puts("\n======================");
printf(" 일 월 화 수 목 금 토 \n");
if(x > 6)
x = 0;
for(a=0; a < x; a++)
printf(" ");
for(b=1; b <= monthend[month]; b++)
{
printf("%3d", b);
if((x + b)%7 == 0)
printf("\n");
}
puts("\n======================");
printf("\n다 보셨으면 아무키나 누르세요.");
getch();
}
|