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;
}
안녕하세요.
아래 출력하는 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가지
n을 4로 초기화 한다.
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 문을 수정하심 됩니다