kitty_lovely
[C언어] 대소문자 바꿔서 출력하기 (다시 풀어보기) 본문
< 문제 설명 >
영어 알파벳으로 이루어진 문자열 str이 주어집니다.
각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.
< 제한사항 >
- 1 ≤ str의 길이 ≤ 20
- str은 알파벳으로 이루어진 문자열입니다.
< 작성코드 >
#include <stdio.h>
#include <ctype.h> // 대소문자 변환을 위해 필요한 헤더 파일
#define LEN_INPUT 10
int main(void) {
char s1[LEN_INPUT];
scanf("%s", s1);
for (int i = 0; s1[i] != '\0'; i++) {
if (islower(s1[i])) {
s1[i] = toupper(s1[i]);
} else if (isupper(s1[i])) {
s1[i] = tolower(s1[i]);
}
}
printf("%s\n", s1);
return 0;
}
< 다른 풀이 >
#include <stdio.h>
#define LEN_INPUT 11
int main(void) {
char s1[LEN_INPUT];
scanf("%s", s1);
int len = strlen(s1);
for(int i = 0; i < len; i++) {
if(s1[i] >= 'A' && s1[i] <= 'Z') s1[i] += 32;
else if(s1[i] >= 'a' && s1[i] <= 'z') s1[i] -= 32;
}
printf("%s", s1);
return 0;
}
#include <stdio.h>
#define LEN_INPUT 10
int main(void) {
char s1[LEN_INPUT];
scanf("%s", s1);
int i=0;
for(i=0 ; s1[i]; i++){
if(islower(s1[i])){
s1[i]=s1[i]-'a'+'A';
} else if(isupper(s1[i])){
s1[i]=s1[i]-'A'+'a';
}
}
printf("%s", s1);
return 0;
}
< 참고 >
- 서치하면서 작성한 코드이기 때문에 반드시 두 코드 리뷰 하고 넘어갈 것!
- 아스키코드 관련해서 인지하고 있어야 함
- islower() 함수는 소문자인 경우 1을 반환하고, isupper() 함수는 대문자인 경우 1을 반환한다.
s1[i]=s1[i]-'a'+'A'
- 주어진 문자열에서 알파벳 소문자를 대문자로 변환하는 방법 중 하나 (ASCII 값으로 알파벳을 변환하는 방법)
- 알파벳의 대문자와 소문자는 ASCII 값으로 32만큼 차이가 남
➡️ 주어진 문자열에서 알파벳 소문자를 대문자로 변환하려면
각 문자의 ASCII 값에서 'a'의 ASCII 값을 빼주고, 이에 'A'의 ASCII 값을 더해주면 됨.
➡️ 주어진 문자열에서 알파벳 소문자를 대문자로 변환하려면
각 문자의 ASCII 값에서 'a'의 ASCII 값을 빼주고, 이에 'A'의 ASCII 값을 더해주면 됨.
❓ 'a'로만 작성해도 아스키값으로 인식되는 이유는?
- 'a'는 작은 따옴표로 감싸진 문자 상수로, C언어에서는 작음 따옴표로 감싸진 문자 상수는 해당 문자의 ASCII 값으로 해석됨
< 관련 에러 >
별도 아카이빙 하지 않음
다음에 재풀이 시에 아카이빙 예정
'응애 나 아기 코테 연습생 > 응애 나 아기 C' 카테고리의 다른 글
| [C언어] 특수문자 출력하기 (0) | 2024.03.25 |
|---|---|
| [C언어] 문자열 반복해서 출력하기 (0) | 2024.03.25 |
| [C언어] a와 b 출력하기 (0) | 2024.03.25 |
| [C언어] 문자열 출력하기 (0) | 2024.03.25 |