반응형

이 문제에 필요한 개념

배열(길이 구하기, 원소의 위치 바꾸기)

반복문

버블 솔트(기타 다른 방법 가능)

함수 분리 방법

 

배열의 길이는 sizeof(array)함수를 사용하였다.

 

C 언어 코딩 도장: 36.4 배열의 크기 구하기

반복문으로 크기가 10인 배열의 요소를 모두 출력한다면 다음과 같이 만들 수 있겠죠? int numArr[10] = { 11, 22, 33, 44, 55, 66, 77, 88, 99, 110 }; // 요소가 10개 for (int i = 0; i < 10; i++) // 0부터 10까지 반복 { //

dojang.io

 

코드는 아래와 같다.

 

#include<stdio.h>   //printf 함수 포함

void line_up(int a[], int length);

int main() {
    int a[] = { 1,2,-4,3,2,123,4 };     //여기에 배열을 넣어주세요.
    int length; //배열의 길이를 넣어주기 위한 변수
    length = sizeof(a) / sizeof(a[0]);  //배열의 길이를 구합니다.
    line_up(a, length); //정렬 함수 실행
    return 0;
}

void line_up(int a[], int length) {
    //버블 솔트 사용할 것
    //max :: 비교 후 큰 값을 저장할 곳
    //i, j :: 반복문을 시행하기 위한 인덱스 변수
    int max, i, j;

    //length-1회 시행
    for (i = 0; i < length - 1; i++) {
        //a[length-i]까지 크기를 비교하여 max 값을 a[length-i]에 저장한다
        for (j = 0; j < length - i - 1; j++){
            //만약 앞의 원소가 크다면
            if (a[j] > a[j + 1])
            {
                //앞의 원소를 max에 저장해라
                max = a[j];
                //뒤의 원소를 앞에 저장해라
                a[j] = a[j + 1];
                //뒤의 원소에 max를 저장해라
                a[j + 1] = max;
            }
        }
    }
    printf("정렬된 숫자는 : \n");
    //배열 출력
    for (i = 0; i < length; i++)
    {
        printf("% d", a[i]);
    }
    printf("\n입니다. \n");
}

 

실행 결과는 아래와 같다.

 

**단축키**

비주얼스튜디오 범위 주석 :: Ctrl + K + C

함수명, 변수명 일괄 변경하는 방법 :: Ctrl+R+R

반응형

+ Recent posts