전통문화대전망 - 오늘의 황력 - 누가 이 C 언어 만년력 절차의 각 단계의 의미를 설명해 줄 수 있습니까? 각 단계 후에 설명을 하나 써라.

누가 이 C 언어 만년력 절차의 각 단계의 의미를 설명해 줄 수 있습니까? 각 단계 후에 설명을 하나 써라.

# include & ltstdio.h & gt% 헤더 파일

Char month day [] = {3 1, 28, 3 1, 30, 3 1, 30,3/kk 월별 일수의 백분율 배열

Char monthdayleap [] = {3 1, 29,31,30,31,30,3 윤년 월별 일수 퍼센트

Char * weekdayname [] = {"일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"};

/* 키 가져오기 */

Char getkey ()

{

Char c, s [10];

Scanf ('%s', s); % 사용할 기능의 일련 번호를 입력합니다

C = s [0];

C 로 돌아가기 % ‧은 (는) 1.2.3.4 만 있기 때문에 입력한 일련 번호를 반환하므로 첫 번째 숫자만 반환됩니다.

}

Void 인쇄 탭 (intn)

{

While(n & gt;; 0)

{

Printf ("\ t"); 비어 있습니다

N-;

}

}

/* 윤년인지 판단한다 */

Char is leapy year(int y)

{

Return(y% 4 = = 0 & amp;; & ampy% 100! = 0 || y%400 == 0)? 1:0); 그해 수가 0 이고 나머지 100 이 0 이 아니거나 나머지 400 이 0 인 경우1을 반환합니다. 그렇지 않으면 0 을 반환합니다.

}

/* 요일 계산 */

Int WeekDay(int y, int m, int d)% y 예 연도 m 예 월 d 예 날짜.

{

Int week

If (m = =1) m =13;

If (m = = 2) m =14;

Week = (d+2 * m+3 * (m+1)/5+y+y/4-y/100+y 요일을 계산하는 공식

주로 돌아가기

}

/* 조회 주 */

Char queryweekday ()

{

Int y, m, d, week, c = 0;;

하다

{

Printf ("년, 월, 일 입력 (oooo oo oo oo) \ n"); 시간을 입력합니다

Scanf ('%d% d% d', & ampy & amp;; M & amp;; D);

주 = 근무일 (y, m, d); 이전 함수를 호출하여 요일을 계산합니다.

Printf ("%d 년% d 월% d 일은 %s 주째입니다. 질의를 계속하시겠습니까 (Y/N)? ",y, m, d, weekdayname [week]; 출력물

C = getkey (); 질의 여부를 입력합니다.

}

While (c = =' y' | | c = =' y');

C 로 돌아가기

}

/* 월 표시 */

Void show month(int y, int m)

{

Int d, dt, week

주 = 근무일 (y, m,1);

If(isLeapYear(y))

Dt = monthdayleap [(m-1)%12]; 윤년 알고리즘

기타

Dt = month day [(m-1)%12]; 평균 연간 알고리즘

For(d = 0;; D<7; D++)

{

Printf(“\ t% s ",weekdayname [d]);

}

Printf ("\ n");

인쇄 탭 (주);

For (d =1; D<= dtd++)

{

Printf(“\ t% 6d ",d);

If(WeekDay(y, m, d)= = 6)

Printf ("\ n");

}

Printf ("\ n");

}

/* 월 표시 */

Char printmonth ()

{

Int y, m, c = 0;;

하다

{

Printf ("연도 및 월 입력 (oooo oo) \ n");

Scanf ('%d% d', & ampy & amp;; M);

Printtab (3);

Printf ('%d 년 \t%d 월 \n', y, m);

쇼 몬트 (y, m); 함수를 호출하여 월을 계산합니다

Printf ("질의를 계속하시겠습니까 (Y/N)?" );

C = getkey ();

}

While (c = =' y' | | c = =' y');

C 로 돌아가기

}

/* 연도 표시 */

Char printyear ()

{

Int y, m, c = 0;;

하다

{

Printf ("연도를 입력하십시오 (oooo) \ n");

Scanf ('%d', & ampy);

Printtab (3);

Printf(“% d calendar \ n', y);

For (m =1; M<= 12; M++)

{

인쇄 탭 (4);

Printf ('%d 월 \n', m);

쇼 몬트 (y, m);

}

Printf ("\ n 질의를 계속하시겠습니까 (Y/N)? );

C = getkey ();

}

While (c = =' y' | | c = =' y');

C 로 돌아가기

}

/* 쿼리 종료 */

Char toexit ()

{

Char c;;

Printf ("정말 종료하시겠습니까 (Y/N)?" );

C = getkey ();

If (c = =' y' | | c = =' y')

1;

기타

0 을 반환합니다

}

/* 만년력 메인 인터페이스 조회 */

Char getmenu ()

{

Printf ("\ n * * * * * * * * * * * * * * * * * * * * * * * * * * * n");

Printf ('\ t 달력 쿼리기 \ n');

Printf ("1\ t 날짜를 기준으로 요일을 확인합니다. \ n");

Printf(“2 \ t 한 달 달력 표시 \ n ");

Printf(“3 \ t 1 년 달력 표시 \ n ");

Printf(“4 \ tExit \ n“); ");

Printf ("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * n");

Printf ("선택 (1-4):";

Return getkey ();

}

Int main(int argc, char *argv [])

{

Char doexit=0, choose

하다

{

/* 메뉴 가져오기 */

Choose = getmenu (); 함수를 호출하여 선택한 기능 항목을 가져옵니다.

/* 분류 처리 */

전환 (선택)

{

사례' 1':

Query weekday (); 주

깨뜨리다

사례 "2":

Printmonth (); 달

깨뜨리다

사례 "3":

Printyear (); 년

깨뜨리다

사례 "4":

Doexit = toexit (); 포기하다

깨뜨리다

기본값:

깨뜨리다

}

}

그리고 (! Do exit);

0 을 반환합니다

}