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
'C language > Codeup' 카테고리의 다른 글
[C] 코드업 문제풀이 1805:입체기동장치 생산공장 (0) | 2021.08.19 |
---|---|
[C] 코드업 문제풀이 1535:함수로 가장 큰 값 위치 리턴하기 (0) | 2021.08.19 |
[C] 코드업 문제풀이 1420: 3등찾기 (0) | 2021.08.18 |
[C] 코드업 문제풀이 1172: 세수 정렬하기 (0) | 2021.08.18 |
[C] 코드업 문제풀이 1460: 2차원 배열 순서대로 채우기 1-1 (0) | 2021.08.18 |