1. 목적
- 문자열에 대한 추가적인 이해를 한다.
2. 문제 (점수 : 25 점)
- 문자열을 입력받아 처음에는 대문자로 변환하고 다음에는 크기 순으로 내림차순 정렬하여 출력하여라.
- 출력 화면
문자열을 입력하세요 : Here I Stand For You !!
입력된 문자열 : Here I Stand For You !!
변환된 문자열 : HERE I STAND FOR YOU !!
정렬된 문자열 : YUTSRROONIHFEEDA!!
Press any key to continue
입력된 문자열 : 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++;
}
5. 해설
- 이전 문제에서 띄워 쓰기를 없애는 기능을 추가했습니다. isspace 함수가 띄워쓰기(엔터/탭/스페이스) 값을 구별하는 역할을 합니다.
- 내림차순은 큰 값에서 작은 값으로 내려가는 의미로 쓰입니다. 당연히 작은값 - 큰값으로 되어 있다면 그 위치를 바꿔줌으로써 정렬을 완성 시킵니다.
6. 참고
- 유사 문제
#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. 참고
- 유사 문제