728x90
문제

주어지는 문장의 대문자를 소문자로, 소문자를 대문자로 변경하는 프로그램을 작성하라.

 

 

입력

한 줄의 공백없는 문장이 입력된다.(최대 길이:1000)

 

 

출력

대소문자를 서로 변환한 결과를 출력한다.

 

 

입력예시

CodeChallenge2014withMSP

 

 

출력예시

cODEcHALLENGE2014WITHmsp


 

#include <stdio.h>
int main(void){
    char alp[1000];
    scanf("%s", alp);
    for(int i=0;alp[i]!='\0';i++){
        if(alp[i]>=65&&alp[i]<=90){
            alp[i]+=32;
        }
        else if(alp[i]>=97&&alp[i]<=122){
            alp[i]-=32;
        }
    }
    for(int i=0;alp[i]!='\0';i++){
        printf("%c", alp[i]);
    }
}

이 문제는 문자열을 바꾸어 주는 문제이다. 그래서 바로 아스키 코드를 생각해냈다.

이것을 활용해서 문제를 풀수 있다.

for문은 끝을 알 수 없기에 문자끝일 경우에 종료하도록 끝부분을 정리해주었고 안에 if else를 활용해 할 수 있었다. 그리고 아스키 코드를 보면서 풀어냈다. 대문자는 65이상 90이하이므로 &&로 연결해서 소문자와의 간격인 32를 더해주었다. 소문자는 97이상 122이하이므로 여기서 대문자가 되기 위해서 32를 빼주었다. 그리고 마무리로 for문을 활용해 문자를 출력해준다. 각각을 출력해주는 것이므로 %c로 해주어야 하고 이렇게 하면 정상적으로 출력이 된다.

728x90

+ Recent posts