#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를 하면 아스키코드가 그만큼 이동해서 각 알파벳을 소대문자를
바꾸는 것 같다.
하지만, 완변하게 완벽하게 이해하고 넘어가야하니, 이해한 상태에서 아래에다가 코드를 다시 한 번 직접 짜보도록 해야겠다.