[1번 문제]
/*
더 정교한 모양으로 디지털 숫자를 표현할 수 있도록 배열을 수정하라
*/
#include <stdio.h>
void number_check(int k, int i);
void digit_print(int dim[], int line);
int zero[20] = { 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1 };
int one[20] = { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1 };
int two[20] = { 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1 };
int three[20] = { 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1 };
int four[20] = { 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1 };
int five[20] = { 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1 };
int six[20] = { 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1 };
int seven[20] = { 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1 };
int eight[20] = { 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1 };
int nine[20] = { 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1 };
int main(void)
{
int num, line;
printf("디지털 숫자 출력 프로그램\n");
printf("1 이상의 정수만 입력합니다 \n\n");
printf("\n정수 숫자입력 후 Enter> ");
scanf("%d", &num);
printf("\n\n");
for (line = 0; line <= 4; line++)
{
number_check(num, line);
printf("\n");
}
return 0;
}
void digit_print(int dim[], int line)
{
int i;
for (i = line * 4; i <= line * 4 + 3; i++)
{
if (dim[i] == 1)
printf("■");
else
printf(" ");
}
printf(" ");
}
void number_check(int k, int i)
{
if (k >= 1)
{
number_check(k / 10, i);
switch (k % 10)
{
case 0:
digit_print(zero, i);
break;
case 1:
digit_print(one, i);
break;
case 2:
digit_print(two, i);
break;
case 3:
digit_print(three, i);
break;
case 4:
digit_print(four, i);
break;
case 5:
digit_print(five, i);
break;
case 6:
digit_print(six, i);
break;
case 7:
digit_print(seven, i);
break;
case 8:
digit_print(eight, i);
break;
case 9:
digit_print(nine, i);
break;
}
}
}
[2번 문제]
/*
소숫점을 포함하는 임의의 실수에 대해서도 디지털 숫자를 출력할 수 있도록 프로그램을 수정한다
*/
#include <stdio.h>
#include <Windows.h>
void number_check(int k, int i);
void digit_print(int dim[], int line);
int zero[20] = { 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1 };
int one[20] = { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1 };
int two[20] = { 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1 };
int three[20] = { 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1 };
int four[20] = { 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1 };
int five[20] = { 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1 };
int six[20] = { 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1 };
int seven[20] = { 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1 };
int eight[20] = { 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1 };
int nine[20] = { 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1 };
int dot[20] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1 };
int main(void)
{
int num, num2=0, line;
printf("디지털 숫자 출력 프로그램\n");
printf("\n실수의 자연수 부분 입력 후 Enter> ");
scanf("%d", &num);
printf("\n\n");
printf("실수의 소숫점 부분 입력 후 Enter> (없다면 0 입력)");
scanf("%d", &num2);
system("cls");
for (line = 0; line <= 4; line++)
{
number_check(num, line);
if (num2 > 0)
{
digit_print(dot, line);
number_check(num2, line);
}
printf("\n");
}
return 0;
}
void digit_print(int dim[], int line)
{
int i;
for (i = line * 4; i <= line * 4 + 3; i++)
{
if (dim[i] == 1)
printf("■");
else
printf(" ");
}
printf(" ");
}
void number_check(int k, int i)
{
if (k >= 1)
{
number_check(k / 10, i);
switch (k % 10)
{
case 0:
digit_print(zero, i);
break;
case 1:
digit_print(one, i);
break;
case 2:
digit_print(two, i);
break;
case 3:
digit_print(three, i);
break;
case 4:
digit_print(four, i);
break;
case 5:
digit_print(five, i);
break;
case 6:
digit_print(six, i);
break;
case 7:
digit_print(seven, i);
break;
case 8:
digit_print(eight, i);
break;
case 9:
digit_print(nine, i);
break;
}
}
}
[3번 문제]
/*
예제 6.1.1은 행렬을 이용하여 디지털 숫자를 표현한 것입니다.
같은 방법을 이용하여 입력한 단어에 대해 확대 영문자를 출력하는 프로그램을 작성하시오
*/
#include <stdio.h>
#include <string.h>
void alphabet_check(char *alpha, int length, int line);
void digit_print(int dim[], int line);
int a[25] = { 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1 };
int b[25] = { 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1 };
int c[25] = { 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1 };
int d[25] = { 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0 };
int e[25] = { 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1 };
int f[25] = { 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 };
int g[25] = { 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1 };
int h[25] = { 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1 };
int I[25] = { 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1 };
int j[25] = { 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0 };
int k[25] = { 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1 };
int l[25] = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1 };
int m[25] = { 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1 };
int n[25] = { 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1 };
int o[25] = { 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0 };
int p[25] = { 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 };
int q[25] = { 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1 };
int r[25] = { 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1 };
int s[25] = { 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1 };
int t[25] = { 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 };
int u[25] = { 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1 };
int v[25] = { 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 };
int w[25] = { 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 };
int x[25] = { 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1 };
int y[25] = { 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1 };
int z[25] = { 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1 };
int main(void)
{
char word[10];
int length, line;
printf("디지털 알파벳 출력 프로그램\n");
printf("영단어만 입력합니다.\n\n");
printf("\n영단어 입력 후 Enter>");
scanf("%s", word);
printf("\n\n");
length = strlen(word);
//printf("%d\n", length);
for (line = 0; line <= 4; line++)
{
alphabet_check(word, length, line);
printf("\n");
}
return 0;
}
void digit_print(int dim[], int line)
{
int i;
for (i = line * 5; i <= line * 5 + 4; i++)
{
if (dim[i] == 1)
printf("■");
else
printf(" ");
}
printf(" ");
}
void alphabet_check(char *alpha, int length, int line)
{
int num = 0;
for (int idx = 0; idx<length; idx++)
{
switch (alpha[num])
{
case 'a':
digit_print(a, line);
break;
case 'b':
digit_print(b, line);
break;
case 'c':
digit_print(c, line);
break;
case 'd':
digit_print(d, line);
break;
case 'e':
digit_print(e, line);
break;
case 'f':
digit_print(f, line);
break;
case 'g':
digit_print(g, line);
break;
case 'h':
digit_print(h, line);
break;
case 'i':
digit_print(I, line);
break;
case 'j':
digit_print(j, line);
break;
case 'k':
digit_print(k, line);
break;
case 'l':
digit_print(l, line);
break;
case 'm':
digit_print(m, line);
break;
case 'n':
digit_print(n, line);
break;
case 'o':
digit_print(o, line);
break;
case 'p':
digit_print(p, line);
break;
case 'q':
digit_print(q, line);
break;
case 'r':
digit_print(r, line);
break;
case 's':
digit_print(s, line);
break;
case 't':
digit_print(t, line);
break;
case 'u':
digit_print(u, line);
break;
case 'v':
digit_print(v, line);
break;
case 'w':
digit_print(w, line);
break;
case 'x':
digit_print(x, line);
break;
case 'y':
digit_print(y, line);
break;
case 'z':
digit_print(z, line);
break;
}
num++;
}
}
[4번 문제]
/*
예제 6.1.1을 이용하여 저학년용 사칙연산 학습프로그램을 작성하시오
*/
#include <stdio.h>
#include <Windows.h>
void number_check(int k, int i);
void digit_print1(int dim[], int line);
void digit_print2(int dim[], int line);
int zero[20] = { 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1 };
int one[20] = { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1 };
int two[20] = { 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1 };
int three[20] = { 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1 };
int four[20] = { 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1 };
int five[20] = { 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1 };
int six[20] = { 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1 };
int seven[20] = { 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1 };
int eight[20] = { 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1 };
int nine[20] = { 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1 };
int plus[25] = { 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 };
int minus[25] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int multiply[25] = { 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1 };
int divide[25] = { 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 };
int equal[25] = { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
int main(void)
{
int num1, num2, line;
int sel;
while (1)
{
system("cls");
printf("사칙연산 프로그램\n\n");
printf("다음 중 원하는 연산을 선택하세요: 1. 더하기 2. 빼기 3. 곱하기 4. 나누기 >");
scanf("%d", &sel);
printf("\n\n");
system("cls");
switch (sel)
{
case 1:
printf("더하기를 선택하셨습니다\n");
printf("첫 번째 숫자를 입력하세요 >");
scanf("%d", &num1);
printf("두 번째 숫자를 입력하세요 >");
scanf("%d", &num2);
Sleep(1000);
system("cls");
for (line = 0; line <= 4; line++)
{
number_check(num1, line);
digit_print2(plus, line);
number_check(num2, line);
digit_print2(equal, line);
number_check(num1 + num2, line);
printf("\n");
}
Sleep(1000);
break;
case 2:
printf("빼기를 선택하셨습니다\n");
printf("첫 번째 숫자를 입력하세요 >");
scanf("%d", &num1);
printf("두 번째 숫자를 입력하세요 >");
scanf("%d", &num2);
Sleep(1000);
system("cls");
for (line = 0; line <= 4; line++)
{
number_check(num1, line);
digit_print2(minus, line);
number_check(num2, line);
digit_print2(equal, line);
number_check(num1 - num2, line);
printf("\n");
}
Sleep(1000);
break;
case 3:
printf("곱하기를 선택하셨습니다\n");
printf("첫 번째 숫자를 입력하세요 >");
scanf("%d", &num1);
printf("두 번째 숫자를 입력하세요 >");
scanf("%d", &num2);
Sleep(1000);
system("cls");
for (line = 0; line <= 4; line++)
{
number_check(num1, line);
digit_print2(multiply, line);
number_check(num2, line);
digit_print2(equal, line);
number_check(num1 * num2, line);
printf("\n");
}
Sleep(1000);
break;
case 4:
printf("나누기를 선택하셨습니다\n");
printf("첫 번째 숫자를 입력하세요 >");
scanf("%d", &num1);
printf("두 번째 숫자를 입력하세요 >");
scanf("%d", &num2);
Sleep(1000);
system("cls");
for (line = 0; line <= 4; line++)
{
number_check(num1, line);
digit_print2(divide, line);
number_check(num2, line);
digit_print2(equal, line);
number_check(num1 / num2, line);
printf("\n");
}
Sleep(1000);
break;
default:
printf("잘못된 선택을 하셨습니다\n");
Sleep(1000);
}
}
return 0;
}
void digit_print1(int dim[], int line)
{
int i;
for (i = line * 4; i <= line * 4 + 3; i++)
{
if (dim[i] == 1)
printf("■");
else
printf(" ");
}
printf(" ");
}
void digit_print2(int dim[], int line)
{
int i;
for (i = line * 5; i <= line * 5 + 4; i++)
{
if (dim[i] == 1)
printf("■");
else
printf(" ");
}
printf(" ");
}
void number_check(int k, int i)
{
if (k >= 1)
{
number_check(k / 10, i);
switch (k % 10)
{
case 0:
digit_print1(zero, i);
break;
case 1:
digit_print1(one, i);
break;
case 2:
digit_print1(two, i);
break;
case 3:
digit_print1(three, i);
break;
case 4:
digit_print1(four, i);
break;
case 5:
digit_print1(five, i);
break;
case 6:
digit_print1(six, i);
break;
case 7:
digit_print1(seven, i);
break;
case 8:
digit_print1(eight, i);
break;
case 9:
digit_print1(nine, i);
break;
}
}
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
[참고] 명품 C언어 프로젝트 안기수 저
'C > 명품 C언어 프로젝트(안기수 저)' 카테고리의 다른 글
명품 C언어 프로젝트 6.3장 연습문제 (0) | 2017.08.26 |
---|---|
명품 C언어 프로젝트 6.2장 연습문제 (0) | 2017.08.22 |
명품 C언어 프로젝트 5.5장 연습문제 (0) | 2017.08.19 |
명품 C언어 프로젝트 5.4장 연습문제 (0) | 2017.08.12 |
명품 C언어 프로젝트 5.3장 연습문제 (2) | 2017.08.05 |