아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
느긋한쇠오리233
느긋한쇠오리23319.06.18

C 배열을 뒤집어서 출력하는 방법에 대해 질문 드립니다.

array에 순서대로 입력된 6개의 숫자1,2,3,4,5를 반대로 5,4,3,2,1로 바꿔 출력시키려고 합니다.

하지만 순서가 뒤집히지 않고 그대로 출력되네요.. 어느 부분이 문제인가요??

int main()

{

int i,n,temp;

int arr[5]={1,2,3,4,5};

int * ptr1=&arr[0];

int * ptr2=&arr[4];

while(i=n)

{

temp=ptr1[i];

ptr1[i]=ptr2[n];

ptr2[n]=temp;

++i;

n--;

}

for(i=0;i<5;i++)

{

printf("%d\n",arr[i]);

}

return 0;

}

55글자 더 채워주세요.
답변의 개수
3개의 답변이 있어요!
  • 안녕하세요.

    아래 출력하는 for문을 아래와 같이 간단히 수정하면 될 듯 합니다.

    배열의 인덱스를 끝에서 부터 처음으로 for loop를 돌리면 뒤집어져서 출력될 것 같습니다.

    for(i=5; i>=0; i--) { printf("%d\n",arr[i]); }

  • 까불이님 안녕하세요.

    까불이님이 올려주신 코드에서 약간만 수정해주시면 될꺼같아요

    일단 i가 0이어야하고 n은 4이어야 할 것 같은데 현재 n이 초기화가 되지 않은 상태이구요

    while(i=n)에서 i에다가 n의 값을 넣고 그 값이 0이 아닐때 while이 동작하는데 현재 0이라고 while내부는 동작하지 않을 거에요. c언어에서는 0이 false고 0외에 나머지 값이 true로 동작합니다.

    그래서 아마 원하는동작은 while(i<n)일것 같아요

    이렇게 2가지

    1. n을 4로 초기화 한다.

    2. while(i<n)으로 수정한다.

    로만 해주시면 원하는대로 동작 할 것 같아요 ㅎㅎ


  • int main() { int i,n,temp; int arr[5]={1,2,3,4,5}; int * ptr1=&arr[0]; int * ptr2=&arr[4]; while(i=n) { temp=ptr1[i]; ptr1[i]=ptr2[n]; ptr2[n]=temp; ++i; n--; } for(i=5;i>=0;i--) { printf("%d\n",arr[i]); } return 0; }

    하단의 for 문을 수정하심 됩니다