1. 목적

  - 문자열에 대한 추가적인 이해를 한다.

2. 문제 (점수 : 25 점)
  - 문자열을 입력받아 처음에는 대문자로 변환하고 다음에는 크기 순으로 내림차순 정렬하여 출력하여라.
  - 출력 화면

문자열을 입력하세요 : Here I Stand For You !!
입력된 문자열 : Here I Stand For You !!
변환된 문자열 : HERE I STAND FOR YOU !!
정렬된 문자열 : YUTSRROONIHFEEDA!!
Press any key to continue


3. 이해
  - 문자열과 각 문자의 특성을 이해하는가?
  - 내림차순에 대한 정렬의 개념을 아는가?

4. 코드

#include <stdio.h>
#include <ctype.h>

int main()
{
 char in[255] = {0};
 char out[255] = {0};
 char swap;
 int i, j, length;
 i = j = length = 0;
 
 printf("문자열을 입력하세요 : ");
 gets(in);
 printf("입력된 문자열 : ");puts(in);
 printf("변환된 문자열 : ");while(in[length] != 0)
 {
  putchar(toupper(in[length]));
  length++;
 
 }

 i = 0;
 j = 0;

 while(in[i] != 0)
 {
  if( !(isspace(in[i])) )
  {
   out[j] = toupper(in[i]);
   j++;

  }

  i++;

 }

 printf("\n정렬된 문자열 : ");
 for(i = 0; i < length; i++)
 {
  for(j = i; j < length; j++)
  {
   if(out[i] < out[j])
   {
    swap = out[i];
    out[i] = out[j];
    out[j] = swap;

   }

  }
 }

 puts(out);

 return 0;
}


5. 해설
  - 이전 문제에서 띄워 쓰기를 없애는 기능을 추가했습니다. isspace 함수가 띄워쓰기(엔터/탭/스페이스) 값을 구별하는 역할을 합니다.
  - 내림차순은 큰 값에서 작은 값으로 내려가는 의미로 쓰입니다. 당연히 작은값 - 큰값으로 되어 있다면 그 위치를 바꿔줌으로써 정렬을 완성 시킵니다.

6. 참고
  - 유사 문제
Posted by 카켈