[1번 문제]
/*
입력한 문자가 한글인지 영문이지를 구분하는 프로그램을 작성하시오
*/
#include <stdio.h>
#include <string.h>
int main(void)
{
unsigned char word[100]; //앞에 unsigned를 꼭 붙여야합니다!
printf("문자를 입력해주세요:");
scanf("%s", word);
for (int i = 0; word[i] != NULL; i++) //문자열의 끝은 NULL입니다
{
if (word[i] >= 65 && word[i] <= 90 || word[i] >= 97 && word[i] < 128)
{
printf("%d번째 문자 %c는 영문입니다\n", i, word[i]);
}
else if (word[i] >= 176 && word[i] <= 200)
{
printf("%d번째 문자 %c%c는 한글입니다\n", i, word[i], word[i + 1]);
i++;
}
else
printf("%d번째 문자는 영문도 한글도 아닙니다\n", i);
}
return 0;
}
영문을 입력할 경우
한글을 입력할 경우
[2번 문제]
/*
[예제 1.2.8]을 이용하여 다음의 그림고 ㅏ같은 형식으로 출력하는 프로그램을 작성하시오
*/
#include <stdio.h>
int main(void)
{
unsigned char a1 = 0xa1;
unsigned char a2 = 0xe1; //검은 사각형
unsigned char a3 = 0xe2; //흰 삼각형
unsigned char a4 = 0xdf; //검은 마름모
unsigned char b1 = 0xa2;
unsigned char b2 = 0xbe; //검은 하트
//그림 a
for (int i = 0; i < 4; i++)
{
if (i == 0 || i == 3)
{
for (int j = 0; j < 5; j++)
{
printf("%c%c", a1, a2);
}
printf("\n");
}
else
{
printf("%c%c", a1, a2);
for (int j = 0; j < 3; j++)
{
printf(" "); //확장코드이므로 두칸 띄워야 한다
}
printf("%c%c", a1, a2);
printf("\n");
}
}
printf("\n\n");
//그림 b
for (int i = 0; i < 5; i++)
{
for (int j = 0; j <= i; j++)
{
printf("%c%c", a1, a3);
}
printf("\n");
}
printf("\n\n");
//그림 c
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5 - i; j++)
{
printf(" ");
}
printf("%c%c", a1, a4);
for (int j = 0; j < 2*i-1; j++)
{
printf(" ");
}
if (i != 0)
{
printf("%c%c", a1, a4);
}
printf("\n");
}
printf("\n\n");
//그림 4
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 10 - i; j++)
{
printf(" ");
}
for (int j = 0; j <= i; j++)
{
printf("%c%c", b1, b2);
}
printf("\n");
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 9 + i; j++)
{
printf(" ");
}
for (int j = 0; j <= 1-i; j++)
{
printf("%c%c", b1, b2);
}
printf("\n");
}
return 0;
}
[3번 문제]
/*
[예제 1.2.8]을 이용하여 다음과 같이 몇 가지 특수기호들을 번호 선택에 의해 출력하는 프로그램을 작성하시오
*/
#include <stdio.h>
int main(void)
{
int sel; //선택용
unsigned char a1 = 0xa1;
unsigned char a2 = 0xda; //검은 별
unsigned char a3 = 0xdf; //검은 마름모
unsigned char a4 = 0xe1; //검은 사각형
unsigned char a5 = 0xe3; //검은 삼각형
unsigned char b1 = 0xa2;
unsigned char b2 = 0xbc; //검은 스페이드
unsigned char b3 = 0xbe; //검은 하트
unsigned char b4 = 0xc0; //검은 클로버
while (1)
{
printf("1. %c%c 2. %c%c 3. %c%c 4. %c%c 5. %c%c 6. %c%c 7. %c%c\n", a1, a2, a1, a3, a1, a4, a1, a5, b1, b2, b1, b3, b1, b4);
printf("번호를 입력하시오>");
scanf("%d", &sel);
switch (sel)
{
case 1:
printf("%c%c\n", a1, a2);
break;
case 2:
printf("%c%c\n", a1, a3);
break;
case 3:
printf("%c%c\n", a1, a4);
break;
case 4:
printf("%c%c\n", a1, a5);
break;
case 5:
printf("%c%c\n", b1, b2);
break;
case 6:
printf("%c%c\n", b1, b3);
break;
case 7:
printf("%c%c\n", b1, b4);
break;
}
}
return 0;
}
[4번 문제]
/*
[예제 1.2.1]을 이용하여 한글 문자열을 입력받아 2byte 완성형 코드(16진수)로 출력하는 프로그램을 작성하시오
*/
#include <stdio.h>
int main(void)
{
char hangul[100];
printf("한글로 된 문자열을 입력하시오");
scanf("%s", hangul);
for (int i = 0; hangul[i] != NULL; i++)
{
printf("%d번째 2byte 완성형 코드 %c%c는 %x%x이다\n", i, hangul[i], hangul[i + 1], hangul[i], hangul[i + 1]);
i++; //2byte이므로
}
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
[참고] 명품 C언어 프로젝트 안기수 저
'C > 명품 C언어 프로젝트(안기수 저)' 카테고리의 다른 글
명품 C언어 프로젝트 3.1장 연습문제 (0) | 2017.06.07 |
---|---|
명품 C언어 프로젝트 2.3장 연습문제 (0) | 2017.06.02 |
[C언어] 시간과 날짜와 관련된 함수들 (4) | 2017.06.02 |
명품 C언어 프로젝트 2.2장 연습문제 (0) | 2017.05.31 |
명품 C언어 프로젝트 2.1장 연습문제 (7) | 2017.05.28 |