상세 컨텐츠

본문 제목

[코딩테스트] 대소문자 바꿔서 출력하기

카테고리 없음

by 데브수달 2023. 9. 9. 08:45

본문

728x90
반응형

 

#include <stdio.h>
#define LEN_INPUT 10

int main() {
    char str[100];
    int i = 0;

    scanf("%[^\n]", str); // 공백을 포함한 문자열을 입력받음

    while (str[i] != '\0') { // 문자열의 끝을 만날 때까지 반복
        if (str[i] >= 'a' && str[i] <= 'z') { // 소문자인 경우
            printf("%c", str[i] - 32); // 대문자로 변환하여 출력
        } else if (str[i] >= 'A' && str[i] <= 'Z') { // 대문자인 경우
            printf("%c", str[i] + 32); // 소문자로 변환하여 출력
        } else { // 알파벳이 아닌 경우
            printf("%c", str[i]); // 그대로 출력
        }

        i++; // 다음 문자로 이동
    }

    return 0;
}

출처  -프로그래머스 코딩테스트 연습- C언어 -대소문자 바꿔서 출력하기 

반복문과 조건문을 활용한 대소문자 변환 출력하기 

- 아스키코드 각 +32 ,-32가 의미하는 바는 

 

While문 - 반복문

while (문자열의 끝을 만날 때까지 반복해라){

IF문 -조건문 

if(IF 만약에 소문자인  경우에는 ) {

       printf ( 대문자로 변환하여 출력해라) ;

} else if (만약에 대문자인 경우에는){

       printf(소문자로 변환하여 출력해라);

}else (위 2가지 경우가 아닌 경우 == 알파벳이 아닌경우에는){

       printf(그대로 출력해라!);

}

i++;

}

return 0;

}

 

살짝 어렵긴 하지만, 이걸 통해서 대소문자 변환에 대해서 아직은 이해하지 못했지만, 

조건문에 넣은 조건들이 a <= i <= z

A<= i<=Z 라고 적은 이유가 위의 반복문에서 각 문자열의 끝을 만날 때까지 반복이기에 

지정해놓은 것이고, 그 지정 가운데 +32, -32를 하면 아스키코드가 그만큼 이동해서 각 알파벳을 소대문자를 
바꾸는 것 같다. 

하지만, 완변하게 완벽하게 이해하고 넘어가야하니, 이해한 상태에서 아래에다가 코드를 다시 한 번 직접 짜보도록 해야겠다. 

 

728x90
반응형