현승일 교수
9주차 3강. 배열을 활용한 프로그래밍 실습
학습내용
학습목표
1. 배열을 함수인자로 전달
2. 배열을 이용한 max, min 값 판별 3. 배열을 이용한 입력문자열 뒤집기
1. 배열을 함수인자로 전달하는 프로그램을 작성할 수 있다.
2. 배열을 이용하여 max, min 값을 판별하는 프로그램을 작성할 수 있다.
3. 배열을 이용하여 입력문자열을 뒤집기하는 프로그램을 작성할 수 있다.
◉ 배열을 함수의 인자로 전달하는 프로그램 실습
1. 배열을 함수의 인자로 전달
• 배열을 함수의 인자로 전달하는 방법 (예) sum = sum_total(arr, 10);
배열은 첫번째 주소가 넘어감
• 함수에서 배열을 받는 방법
(예) int sum_total(int a[], int n)
◉ 배열을 이용한 max, min 값 판별 프로그램 실습
2. 배열을 이용한 max, min 값 판별
• 배열을 이용하여 값을 입력 받는 방법 - 문자열 형태 : scanf(“%s”, arr);
- 배열요소에 특정 값 입력 : scanf(“%d”, &arr[i]);
◉ 배열을 이용한 입력문자열 뒤집기 프로그램 실습
3. 배열을 이용한 입력문자열 뒤집기
• 중심 값을 기준으로 좌우 값을 서로 바꾸는 프로그램 // 영단어 길이의 반에 해당하는
// 수만큼 두문자를 바꾸는 과정 거침
for ( i = 0 ; i < len/2 ; i ++ ) {tmp = voca [ i ] ;
voca [ i ] = voca [ ( len - i ) ] – 1 ] ; voca [ ( len - i ) – 1 ] = tmp ;
}
학습하기가 끝났습니다.
다음페이지 버튼을 클릭하여
평가문항을 풀어보세요. 4. 프로그래밍 실습
※ 자료실에서 프로그램 소스 코드를 다운로드 받으세요.
실습
4. 프로그래밍 실습(1)
◉ 함수인자로 전달(1)
1. main() 함수보다 뒤쪽에 위치한 함수는 항상 함수원형을 선언해주어야 한다.
2. 배열을 함수의 인자로 전달 시 call-by-reference 에 의해 주소가 전달된다.
3. 13라인과 같이 sum_total(arr, 10) 형태로 단순히 배열명만 써주어도 주소가 전달된다.
실습
4. 프로그래밍 실습(2)
◉ 함수인자로 전달(2)
4. 호출하는 쪽에서는 sum_total(arr, 10)과 같이 단순히 배열명만 써준다.
5. 호출되는 쪽에서는 sum_total(int a[], in n)과 같이 전달된 자료구조의 성격을 명확하게 해주는 것이 좋다. (a[], *a 두 가지 형태로 모두 받을 수 있지만 배열이므로 a[]이 좋다.)
실습
4. 프로그래밍 실습(3)
◉ max, min 값 판별(1)
1. 값을 배열에 입력 받은 후 배열에 저장된 값을 비교하여 최대값, 최소값을 판별한다.
2. 문자열 배열에 문자열을 입력 받을 경우 scanf(“%s”, arr)과 같이 배열명을 써준다.
3. 배열요소에 특정 값을 입력 받을 시는 scanf(“%d”, &arr[i])와 같이 & 연산자를 붙여준다.
실습
4. 프로그래밍 실습(4)
◉ max, min 값 판별(2)
4. max, min 값 판별 알고리즘
- arr[0] 즉 배열의 첫번째 값을 max=min=arr[0]로 둔다.
- arr[i] 로 다음 값을 읽어와서 max, min 값과 비교 후 max, min 값을 바꾼다.
- i 값이 종료될 때 까지 반복하면 max, min에 남은 값이 최대값, 최소값이 된다.
실습
4. 프로그래밍 실습(5)
◉ 입력문자열 뒤집기(1)
1. 배열에 특정문자열을 읽어 들이고, 이 값의 중심값을 기준으로 좌우값을 바꾸는 프로그램 작성하기 2. voca 문자열 배열에 문자열을 읽어 들여 저장할 때 scanf(“%s”, voca)와 같은 형태로 한다.
3. 문자열은 마지막에 NULL 값이 들어 있으므로 strlen(voca)와 같이 길이를 구할 수 있다.
실습
4. 프로그래밍 실습(6)
◉ 입력문자열 뒤집기(2)
4. 문자열의 좌우를 바꾸는 알고리즘
- 문자열의 전체길이를 구하고, 길이의 중간 값을 구한다.
- 배열에 저장된 문자열의 제일 처음 값부터 뒤쪽으로 제일 뒤쪽 값부터 앞쪽으로 인덱스를 증가(감소)시키며 중간 값 만큼 서로 값을 바꾸기를 반복한다.