Page 60 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 60
maxof 함수를 호출하면 전달된 포인터 height(&height[0])에서 매개변수 a가 초기화되기 때문에 포
인터 a는 height[0]의 주소를 가리키게 됩니다.
이때 전달받은 인수(height)는 단순히 포인터이지 배열이 아니므로 배열의 요소 개수는 새로운 인수로
전달받아야 합니다(호출하는 함수는 배열의 요소 개수를 알 수 없습니다). 이 인수가 n입니다.
난수 사용해 배열의 요솟값 설정하기
배열의 요소에 값을 하나씩 입력하는 것이 귀찮을 경우 각 요소에 난수를 대입하면 됩니다.
실습 2-6 •완성 파일 chap02/ary_max_rand.c
01 /* 배열 요소의 최댓값을 구합니다(값을 난수로 생성). */
실행 결과
02 #include <time.h>
사람 수 : 5
03 #include <stdio.h> 1 height[0] = 172
04 #include <stdlib.h> height[1] = 137
05 height[2] = 168
06 /*--- 요소 개수가 n인 배열 a의 요소의 최댓값을 구합니다. ---*/ height[3] = 189
height[4] = 113
07 int maxof(const int a[], int n)
최댓값은 189입니다.
08 {
09 int i;
10 int max = a[0]; /* 최댓값 */
11 for(i = 1; i < n; i++)
12 if(a[i] > max) max = a[i];
13 return max;
14 }
15
16 int main(void)
17 {
18 int i;
19 int *height; /* 배열의 첫 번째 요소의 포인터 */
20 int number; /* 사람 수 = 배열 height의 요소 개수 */
21 printf("사람 수 : ");
22 scanf("%d", &number);
23 height = calloc(number, sizeof(int)); /* 요소 개수가 number인 배열을 생성 */
24 srand(time(NULL)); /* 시간으로 난수의 seed(씨앗)를 초기화 */
2
25 for(i = 0; i < number; i++) {
3
26 height[i] = 100 + rand() % 90; /* 100 ~ 189의 난수를 생성 · 대입 */
27 printf("height[%d] = %d\n", i, height[i]);
28 }
60 C 알고리즘