Algorithm/Do it

[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 2장 기본 자료구조 연습문제 Q5 답안 p.75

Bonita SY 2019. 10. 9. 17:27
728x90
반응형

Q5. 배열 요소를 역순으로 정렬하는 과정을 일일이 출력하도록 실습 2-7을 수정한 프로그램을 작성하세요.

※ ary_reverse 함수를 수정하세요.


코드)

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

#define swap(type, x, y) do{type t=x; x=y; y=t;} while(0)

void ary_reverse(int a[], int n) {
  int i;
  int j;
  for(i=0; i<n/2; i++) {
    for(j=0; j<n; j++)
      printf("%d ", a[j]);
    puts("");
    printf("a[%d]과 a[%d]를 교환합니다.\n", i, n-i-1);
    swap(int, a[i], a[n-i-1]);
  }
}

int main(void) {
  int i;
  int *x;
  int nx;

  printf("요소개수 : ");
  scanf("%d", &nx);
  x = calloc(nx, sizeof(int));
  printf("%d개의 정수를 입력하세요.\n", nx);
  for(i=0; i<nx; i++) {
    printf("x[%d] : ", i);
    scanf("%d", &x[i]);
  }
  ary_reverse(x, nx);
  printf("배열의 요소를 역순으로 정렬했습니다.\n");
  for(i=0; i<nx; i++) {
    printf("x[%d] = %d\n", i, x[i]);
  }
  free(x);
  return 0;
}

실행결과)

sy@sy:~/algorithm/doit/chap02$ gcc q5.c -o q5
sy@sy:~/algorithm/doit/chap02$ ./q5
요소개수 : 5
5개의 정수를 입력하세요.
x[0] : 10
x[1] : 73
x[2] : 2
x[3] : -5
x[4] : 42
10 73 2 -5 42
a[0]과 a[4]를 교환합니다.
42 73 2 -5 10
a[1]과 a[3]를 교환합니다.
배열의 요소를 역순으로 정렬했습니다.
x[0] = 42
x[1] = -5
x[2] = 2
x[3] = 73
x[4] = 10
728x90
반응형