고양이와 코딩

function 본문

C

function

ovovvvvv 2024. 6. 9. 17:27
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