1. 목적
  - 반복문에 대해 이해한다.
  - 내림차순 숫자 정렬을 이해한다.

2. 문제 (점수 : 25 점)
  - -10 ~ 10 사이의 임의의 정수 10개를 생성하여 출력후 다시 크기가 큰 순서대로 정렬하여 출력하는 프로그램을 작성하라.
  - 중복에 대한 처리는 하지 않고 느야 같이 정렬한다.
  - 출력 화면

정렬전 : -1 -9 -3 9 -6 4 -10 0 3 4
정렬후 : 9 4 4 3 0 -1 -3 -6 -9 -10
Press any key to continue

3. 이해
  - 내림차순 정렬을 아는가?
  - 난수를 원하는 범위에서 출력할수 있는가?
  - 정렬을 위한 알고리듬을 이해하는가?

4. 코드

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

int main()
{
 int i,j,swap;
 int in[10] = {0};

 i = j = swap = 0;

 srand((unsigned)time(NULL));
 rand();

 printf("정렬전 : ");
 for(i = 0; i < 10; i++)
 {
  in[i] = rand() % 21 - 10;
  printf("%d ", in[i]);

 }

 printf("\n정렬후 : ");

 for(i = 0; i < 10; i++)
 {
  for(j = i + 1; j < 10; j++)
  {
   if(in[i] < in[j])
   {
    swap = in[i];
    in[i] = in[j];
    in[j] = swap;

   }

  }

  printf("%d ", in[i]);

 }

 putchar('\n');

 return 0;
}

5. 해설
  - 숫자를 넣을때 같이 출력을 했고 정렬을 하면서 같이 출력을 해서 반복문 사이에 printf 문이
    있습니다.
  - swap 가 교환을 위해 임시로 담은 변수 입니다.
  - rand() 로 -10 ~ 10 의 숫자를 만드는 원리는 ( 32767 ) % 21 => ( 0 ~ 20 )- 10 =>
     -10 ~ 10 입니다.
  - 내림차순 정렬은 큰값이 작은 값으로 내려가는 모습이 폭포수 처럼 아래로 내리는 모양을 하였기
    에 내림차순이라 하며 오름차순은 큰값이 밑에 있고 작은수 방향으로 올라가는 모습을 하여 오름
    차순이라 하면 이해하기 쉽습니다.

6. 참고
  - http://mwultong.blogspot.com/2006/10/c-int-sort.html : 내림차순 정렬
  - 유사 문제

Posted by 카켈