고양이와 코딩
function 본문
728x90
/* 10개의 원소를 입력받고, 그 원소를 큰 순으로 출력하는 함수를 만들어 보세요 */
#include <stdio.h>
#include <stdlib.h>
void maxOfArray(int arr[], int n); // 함수의 원형 선언
int main()
{
int arr[10];
int i;
printf("10개의 원소를 입력하세요: \n");
for (i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
maxOfArray(arr, 10);
return 0;
}
// 선택 정렬 알고리즘
void maxOfArray(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++){
for (j = i + 1; j < n; j++){
if(arr[i] < arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
printf("큰 순서대로 출력: \n");
for (i = 0; i < n; i++){
printf("%d", arr[i]);
}
printf("\n");
}
main함수를 맨 위에 작성할 경우, 아래에 있는 함수들을 함수의 원형으로 선언해준다.
maxOfArray(arr, 10);
C 언어에서 배열은 함수에 인자로 전달될 때 배열의 첫 번째 요소의 주소가 전달된다. 이는 배열 전체에 접근할 수 있음을 의미한다!
따라서 maxOfArray 함수에 전달된 arr는 배열 전체를 가리키고 있으므로 배열의 모든 요소에 접근할 수 있다.
선택 정렬 알고리즘 , 입력을 "1 2 3 4 5 6 7 8 9 10" 으로 했을 경우
1. 첫 번째 외부 반복(i = 0)
- i = 0, 배열은 1 2 3 4 5 6 7 8 9 10
- 내부 반복(j)에서 가장 큰 값을 찾습니다: 10
- arr[0]과 arr[9]을 교환합니다.
- 배열 상태: 10 2 3 4 5 6 7 8 9 1
2. 두 번째 외부 반복(i = 1)
- i = 1, 배열은 10 2 3 4 5 6 7 8 9 1
- 내부 반복(j)에서 가장 큰 값을 찾습니다: 9
- arr[1]과 arr[8]을 교환합니다.
- 배열 상태: 10 9 3 4 5 6 7 8 2 1
3. 세 번째 외부 반복(i = 2)
- i = 2, 배열은 10 9 3 4 5 6 7 8 2 1
- 내부 반복(j)에서 가장 큰 값을 찾습니다: 8
- arr[2]과 arr[7]을 교환합니다.
- 배열 상태: 10 9 8 4 5 6 7 3 2 1
4. 네 번째 외부 반복(i = 3)
- i = 3, 배열은 10 9 8 4 5 6 7 3 2 1
- 내부 반복(j)에서 가장 큰 값을 찾습니다: 7
- arr[3]과 arr[6]을 교환합니다.
- 배열 상태: 10 9 8 7 5 6 4 3 2 1
5. 다섯 번째 외부 반복(i = 4)
- i = 4, 배열은 10 9 8 7 5 6 4 3 2 1
- 내부 반복(j)에서 가장 큰 값을 찾습니다: 6
- arr[4]과 arr[5]을 교환합니다.
- 배열 상태: 10 9 8 7 6 5 4 3 2 1
6. 여섯 번째 외부 반복(i = 5)
- i = 5, 배열은 10 9 8 7 6 5 4 3 2 1
- 내부 반복(j)에서 가장 큰 값을 찾습니다: 5 (교환할 필요가 없음)
- 배열 상태: 10 9 8 7 6 5 4 3 2 1
7. 일곱 번째 외부 반복(i = 6)
- i = 6, 배열은 10 9 8 7 6 5 4 3 2 1
- 내부 반복(j)에서 가장 큰 값을 찾습니다: 4 (교환할 필요가 없음)
- 배열 상태: 10 9 8 7 6 5 4 3 2 1
8. 여덟 번째 외부 반복(i = 7)
- i = 7, 배열은 10 9 8 7 6 5 4 3 2 1
- 내부 반복(j)에서 가장 큰 값을 찾습니다: 3 (교환할 필요가 없음)
- 배열 상태: 10 9 8 7 6 5 4 3 2 1
9. 아홉 번째 외부 반복(i = 8)
- i = 8, 배열은 10 9 8 7 6 5 4 3 2 1
- 내부 반복(j)에서 가장 큰 값을 찾습니다: 2 (교환할 필요가 없음)
- 배열 상태: 10 9 8 7 6 5 4 3 2 1
'C' 카테고리의 다른 글
함수 포인터 연습문제 (0) | 2024.06.16 |
---|---|
포인터 진짜 짜증남 (0) | 2024.06.15 |
포인터 (0) | 2024.05.10 |
비트 연산 (0) | 2024.05.10 |
[씹어먹는 C 언어] 반복문 - 삼각형 그리기 (0) | 2024.03.17 |