c 홀수이면 배열의 앞에서부터 채워나가고 짝수이면 뒤에서부터 채우기

조회수 822회
int main(void)
{
    int temp[10];
    int arr[10];
    int a = 0, b = 0;
    for (int i = 0; i < 10; i++)
    {
        scanf("%d", &arr[i]);
        temp[i] = arr[i];
    }
    for (int i = 0; i < 10; i++)
    {
        if (arr[i] % 2 == 0)
        {
            arr[9-a] = temp[i];
            a++;
        }
        else
        {
            arr[b] = temp[i];
            b++;
        }
    }
    for (int i = 0; i < 10; i++)
        printf("%d ", arr[i]);
    return 0;
}

입력받은 숫자가 홀수이면 배열의 앞에서부터 채워나가고 짝수이면 뒤에서부터 채워나가는 형식이 되게끔 코딩을 한건데 결과가 다릅니다.

뭐가 문젠지 감이 안옵니다.

1 답변

  • #include <stdio.h>
    
    int main(void)
    {
        int temp[10];
        int arr[10]; // 이건 결과를 넣는거로만 생각
        int a = 0, b = 0;
        for (int i = 0; i < 10; i++)
        {
            scanf("%d", &temp[i]);
    //        temp[i] = arr[i];
        }
        for (int i = 0; i < 10; i++)
        {
    //        if (arr[i] % 2 == 0) // 이건 결과 넣는곳인데 이곳을 분기시키면 변경된 값이 반영되버리는 현상이 발생함.
            if (temp[i] % 2 == 0)
            {
                arr[9-a] = temp[i];
                a++;
            }
            else
            {
                arr[b] = temp[i];
                b++;
            }
        }
        for (int i = 0; i < 10; i++)
            printf("%d ", arr[i]);
        return 0
    
    /* 
    기존 코드 결과
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    13 15 17 19 22 21 20 18 16 14
    
    변경 후
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    13 15 17 19 21 22 20 18 16 14
    */
    
    

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

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

(ಠ_ಠ)
(ಠ‿ಠ)