C언어 대소문자 판별 프로그램
C언어에서 값이 대문자인지 소문자인지 판별하는 프로그램을 작성합니다. 만약 쉽게 하고 싶다면, <ctype.h>를 인클루드해서 islower() isupper()함수를 사용할 수 있습니다. 여기서 저는 대소문자 구별 함수를 직접 구현합니다.
대소문자 구별을 위해서 아스키 코드를 활용할 것입니다. 하지만 직접 아스키 코드를 입력하지는 않고, 문자가 아스키 코드 상에서 순서를 가진다는 것을 활용합니다.
대소문자 판별 코드
간단 설명:
4번쨰 줄 : 입력한 문자 ch가 a보다 크고, z보다 작고(아스키 코드 상에서 ch의 아스키 값이 a와 z의 아스키 값 사이에 있다면), A보다크고, Z보다 작다면 if문 실행 ; 알파벳 대문자이거나 소문자일 때 트루
11번쨰 줄 : Z보다 작다면 1 리턴, 즉 입력한 문자가 대문자임을 의미
(대문자가 소문자보다 아스키테이블 상에서 앞쪽에 있으므로 Z보다 작다, 라고만 해도 범위에 알파벳 소문자를 포함하지 않습니다.)
25번째 줄 : 11번째 줄이 0을 리턴하는 경우 해당 문자는 소문자임을 의미
이유: 앞서 해당 문자가 알파벳임은 검증을 끝냈음, 게다가 대문자가 아니므로 소문자인 경우밖에 남지 않음
#include <stdio.h>
int isAlphabet(char ch){
if('a'<=ch && 'z'>=ch || 'A'<=ch && 'Z'>=ch)
return 1;
else
return 0;
}
int isUpper(char ch){
if(ch<='Z')
return 1;
else
return 0;
}
int main(void){
char ch;
scanf("%c", &ch);
printf("%c is ", ch);
if (isAlphabet(ch)){
if(isUpper(ch))
printf("대문자입니다.\n");
else
printf("소문자입니다.\n");
}
else
printf("알파벳이 아닙니다.\n");
return 0;
}
참조. 아스키 테이블
아래 아스키 테이블을 참조하면 코드의 의도를 파악하기 쉽습니다.
'컴퓨터 > C, C++' 카테고리의 다른 글
[C언어] 단어 개수를 세는 프로그램, 공백으로 단어 구별 (0) | 2021.12.08 |
---|---|
[C언어] 아스키 코드 활용 소문자를 대문자로 바꾸기 (0) | 2021.12.07 |
[C언어] 입력값으로 시, 분, 초 구하기 (0) | 2021.12.07 |
[C언어] 입력하는 범위 사이 n의 배수의 합 구하기 (0) | 2021.12.07 |
[C언어] 구조체 변수 값 바꾸기, 두 구조체 변수 값 변경(swap 함수) (0) | 2021.11.23 |
댓글