c언어 배열 역출력 함수 질문이요!

조회수 836회
#define _crt_secure_no_warnings
#include<stdio.h>
void GetIntArray(int v[], int n);
void ReverseIntArray(int v[], int n);
void PrintIntArray(int v[], int n);

int main()
{
    int tem[] = { 0 };
    int n;
    GetIntArray(tem,n);
    ReverseIntArray(tem,n);
    PrintIntArray(tem,n);
}

void GetIntArray(int v[], int n)
{
    int i;
    for (i = 0; i < n; i++)
        scanf("%d", &v[i]);
}

void ReverseIntArray(int v[], int n)
{
    int i;
    int tem2[] = { 0 };
    for (i = 0; i < n; i++)
        tem2[i] = v[i];
    for (i = 0; i < n; i++)
        v[i] = tem2[n - 1 - i];
}

void PrintIntArray(int v[], int n)
{
    int j;
    for (j = 0; j < n; j++)
        printf("%d", v[j]);
}

배열 역출력 함수 질문입니다. n개의 정수를 입력받아 1,2,3,4,5-> 5,4,3,2,1이 나와야 합니다 어디가 오류인지 모르겠습니다.

1 답변

  • 배열은 선언과 함께 크기가 고정되어 있어야 해요. 지금은 배열 선언부분이 모두 틀렸고, n이 입력 받을 값의 개수를 저장할 변수인거 같은데 아무 값도 입력되어 있지 않아서 정상 동작하지 않습니다.

    수정된 아래 코드 참고하세요.

    #define _CRT_SECURE_NO_WARNINGS
    
    #include<stdio.h>
    void GetIntArray(int v[], int n);
    void ReverseIntArray(int v[], int n);
    void PrintIntArray(int v[], int n);
    
    #define ARRAY_SIZE 20
    
    int main()
    {
        int tem[ARRAY_SIZE] = { 0 };
        int n = 5;
        GetIntArray(tem, n);
        ReverseIntArray(tem, n);
        PrintIntArray(tem, n);
    }
    
    void GetIntArray(int v[], int n)
    {
        int i;
        for (i = 0; i < n; i++)
            scanf("%d", &v[i]);
    }
    
    void ReverseIntArray(int v[], int n)
    {
        int i;
        int tem2[ARRAY_SIZE] = { 0 };
        for (i = 0; i < n; i++)
            tem2[i] = v[i];
        for (i = 0; i < n; i++)
            v[i] = tem2[n - 1 - i];
    }
    
    void PrintIntArray(int v[], int n)
    {
        int j;
        for (j = 0; j < n; j++)
            printf("%d", v[j]);
    }
    
    
    • 결과

    이미지

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

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

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

(ಠ_ಠ)
(ಠ‿ಠ)