C 언어 순서정리 오류 질문

조회수 478회
// C 언어


#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main()
{
    int ArrRoom[10] = {0,};

    srand(time(NULL));

    for (int i = 0; i < 10; i++)            // ArrRoom 배열에 1 ~ 10까지 난수로 입력함
    {
        int ran = (rand() % 10) + 1;

        ArrRoom[i] = ran;
    }

    for (int i = 0; sizeof(ArrRoom)/sizeof(int)-1; i++)        // 순서 정리
    {
        int change = 0;   // 값 저장 변수 

        if (ArrRoom[i] > ArrRoom[i+1])
        {
            change = ArrRoom[i+1];
            ArrRoom[i+1] = ArrRoom[i];
            ArrRoom[i] = change;
        }
    }

    for (int i = 0; sizeof(ArrRoom)/sizeof(int); i++)       // 실행결과 출력
    {
        printf("%d ",ArrRoom[i]);
    }

    return 0;
}


1~10 까지 난수를 받아 순서대로 정렬하려 하는데 실행하면 "Segmentation fault (core dumped)" 라는 오류가 뜨는데 왜 이렇게 나오는지 모르겠습니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • for 문법을 다시 한번 살펴보세요. 또한 상수는 #define 을 활용하세요.

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #define COUNT 10 
    
    int main()
    {
        int ArrRoom[COUNT] = {0,};
    
        srand(time(NULL));
    
        for (int i = 0; i < COUNT; i++)            // ArrRoom 배열에 1 ~ 10까지 난수로 입력함
        {
            int ran = (rand() % COUNT) + 1;
    
            ArrRoom[i] = ran;
        }
    
        for (int i = 0; i < sizeof(ArrRoom)/sizeof(int); i++)        // 순서 정리
        {
            int change = 0;   // 값 저장 변수 
    
            if (ArrRoom[i] > ArrRoom[i+1])
            {
                change = ArrRoom[i+1];
                ArrRoom[i+1] = ArrRoom[i];
                ArrRoom[i] = change;
            }
        }
    
        for (int i = 0; i < sizeof(ArrRoom)/sizeof(int); i++)       // 실행결과 출력
        {
            printf("%d ",ArrRoom[i]);
        }
    
        return 0;
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)