Page 85 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 85
4행 3열의 2차원 배열을 5개 모아 다시 배열을 만들면 3차원 배열이 됩니다. 3차원 배열 c의
선언은 다음과 같습니다.
int c[5][4][3]; /* c는 3차원 배열 */
배열 c의 자료형은 int[5][4][3]형입니다. 첫 번째 구성 요소는 c[0][0][0]이고, 마지막 구성
요소는 c[4][3][2]입니다.
한 해의 지난 날 수를 계산하는 프로그램
년, 월, 일의 3개의 값이 주어지면 이를 이용해 해당하는 연도의 지난 날 수를 구하는 프로그
램을 작성해 보겠습니다.
실습 2-12 •완성 파일 chap02/dayofyear.c
01 /* 한 해의 지난 날 수를 구합니다. */
실행 결과
02 #include <stdio.h>
년 : 2017
03 월 : 4
04 /*- 각 달의 날 수 -*/ 일 : 15
05 int mdays[][12] = { 2017년의 105일째입니다.
06 {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, 다시 할까요?(1 … 예/0 … 아니오) : 0
07 {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
08 };
09
10 /*--- year년이 윤년인가? ---*/
11 int isleap(int year)
12 {
13 return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
14 }
15
16 /*--- y년 m월 d일의 그 해 지난 날 수를 구합니다. ---*/
17 int dayofyear(int y, int m, int d)
18 {
19 int i;
20 int days = d; /* 날 수 */
21 for(i = 1; i < m; i++)
22 days += mdays[isleap(y)][i - 1];
23 return days;
24 }
02• 기본 자료구조 85