프로젝트 & 과제/3학년

[C언어] 한글 / 영어 / 숫자 / 특수문자

qqlzzb 2022. 1. 24. 19:20

개요

프로그래밍 언어 : C언어

과제 수행 날짜 : 2020.09.11

과제 개요 : 한글 / 영어 / 숫자 / 특수문자를 출력하고 판별하는 프로그램

 

1. 입력받은 문자열이 한글인지 영어인지 판별

1) 코드

int is_hangul(unsigned char st[]);

int main()
{
    int i = 0; //함수의 리턴값을 받을 변수 i 선언
    char st[100]; //문자열을 저장할 배열 선언
    scanf("%s", st); //문자열을 입력받는다.
    
    i = is_hangul(st); //is_hangul 함수를 수행하고 리턴값을 i에 저장
    
    if(i == 0) //만약 리턴값이 0이면 한글
    {
    	printf("한글\n");
    }
    else       //만약 리턴값이 1이며 영어
    {
    	printf("영어\n");
    }
    return 0;
}

int is_hangul(unsigned char st[])
{
    if(st[0] > 127) //배열의 첫 문자가 127보다 크다면 영어나 숫자가 아니라는 의미
    {
    	return 0; //따라서 0을 리턴
    }
    else            //127 이하면 영어 또는 숫자라는 의미
    {
    	return 1; //따라서 1을 리턴
    }
}

2) 결과

3) 설명

is_hangul 함수에서는 배열의 첫 번째 문자의 값이 128보다 큰지 작은지에 따라 한글과 영어를 구분한다. 128 이상이라면 한글, 127이하라면 영어로 판단하여 0 또는 1을 리턴한다. main 함수에서는 is_hangul 함수에서 받은 리턴값을 이용하여 한글인지 영어인지를 출력한다. 

scanf를 통해 문자열을 입력받을 때, scanf("%s", &st)를 하지 않고 scanf("%s", st)를 하는 이유는 배열은 주소를 답고 있기 때문에 &을 한 번 더 써주지 않는 것이다.

2. 숫자 1~7을 입력 받으면 A~G를 출력

1) 코드

#include <stdio.h>

int main()
{
    int a; //숫자를 입력받기 위한 변수 선언
    scanf("%d", &a); //숫자를 입력받는다
    printf("%c", a + 'A'-1); //입력 받은 숫자에 'A'에 해당하는 값에서 1을 뺀 값 더한다
    return 0;
}

2) 결과

3) 설명

1부터 7까지의 숫자를 입력 받아서 알파벳으로 변환하여 출력하려면 A의 값에서 1을 뺀 값을 더해주면 된다. 만약 1을 받아서 A를 출력한다면 1에다가 A에 해당하는 값에서 1을 빼준 값을 더해주면 A를 출력할 수 있다. 그리고 B는 A보다 1만큼 크므로 2를 입력받아서 앞에서와 같은 값을 더해주면 B를 출력할 수 있다.

3. 가운데 공백이 있는 직사각형 출력

1) 코드

#include <stdio.h>

int main()
{
	int line = 5;
    for(int i = 0; i < line-1; i++) //사각형이 정사각형이 아니므로 line-1 만큼 반복
    {
    	printf("\n");
        for(int j = 0; j < line; j++)
        {
        	if(i == 0 || i == line-2 || j == 0 || j == line-1) //네모가 출력될 조건
            {
            	printf("%c%c", 0xA1, 0xE1); //네모를 출력한다.
            }
            else
            {
            	printf("   "); //그렇지 않은 경우 공백을 출력한다.
            }
        }
    }
    return 0;
}

2) 결과

3) 설명

가운데 공백이 있는 직사각형이므로 바깥 for문은 총 4번, 안쪽 for문은 총 5번을 돌면 된다. 또한 공백 부분을 제외한 부분에는 네모를 출력해야 하므로 그 조건을 살펴보면, 가로로 첫 번째 줄과 4번째 줄, 그리고 세로로 첫 번째 줄과 5번째 줄에만 네모를 출력하면 된다.

이 조건들을 ||로 if 문 안에 넣으면 해당 조건에서만 네모가 출력된다.