개요
프로그래밍 언어 : 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 문 안에 넣으면 해당 조건에서만 네모가 출력된다.
'프로젝트 & 과제 > 3학년' 카테고리의 다른 글
[C언어] 비트 연산 (0) | 2022.01.26 |
---|---|
[C언어] 출력 프로그램의 변수공간 (0) | 2022.01.25 |
[C언어] 변수의 메모리 할당 위치 (0) | 2022.01.23 |
[센서] Lane detection (0) | 2022.01.22 |
[센서] 주차장 출차 시뮬레이션 2 (0) | 2022.01.21 |