[1번 문제]
/*
[예제 3.5.1]을 이용하여 다음의 [그림 A]와 같이 기본 정사각형 5개를 연속적으로 세로 방향으로 출력하는 프로그램을 작성합니다
*/
#include <stdio.h>
void draw_basic_square(void);
int main(void)
{
for (int i = 0; i < 5; i++)
{
draw_basic_square();
printf("\n");
}
return 0;
}
void draw_basic_square(void)
{
unsigned char a = 0xa6, b[7], i;
for (i = 1; i < 7; i++)
b[i] = 0xa0 + i;
printf("%c%c", a, b[3]);
printf("%c%c", a, b[4]);
printf("\n");
printf("%c%c", a, b[6]);
printf("%c%c", a, b[5]);
printf("\n");
}
[2번 문제]
/*
[예제 3.5.1]을 이용하여 다음의 [그림 B]와 같이 기본 정사각형 5개를 연속적으로
가로 방향으로 출력하는 프로그램을 작성합니다
*/
#include <stdio.h>
#include <Windows.h>
void gotoxy(int x, int y);
void draw_basic_square(x, y);
int main(void)
{
int x, y;
for (int i = 0; i < 5; i++)
{
x = 1+(i)*4;
y = 1;
gotoxy(x, y);
draw_basic_square(x, y);
}
printf("\n");
return 0;
}
void gotoxy(int x, int y)
{
COORD Pos = { x - 1, y - 1 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}
void draw_basic_square(x, y)
{
unsigned char a = 0xa6, b[7], i;
for (i = 1; i < 7; i++)
b[i] = 0xa0 + i;
gotoxy(x, y);
printf("%c%c", a, b[3]);
gotoxy(x + 2, y);
printf("%c%c", a, b[4]);
gotoxy(x, y+1);
printf("%c%c", a, b[6]);
gotoxy(x + 2, y + 1);
printf("%c%c", a, b[5]);
}
[3번 문제]
/*
문제 1과 문제 2를 혼합하여 [그림 C]와 같이 출력하는 프로그램을 작성한다
*/
#include <stdio.h>
#include <Windows.h>
void gotoxy(int x, int y);
void draw_basic_square(x, y);
int main(void)
{
int x, y;
for (int j = 0; j < 5; j++)
{
for (int i = 0; i < 5; i++)
{
x = 1 + (i) * 4;
y = (j + 1) + j;
gotoxy(x, y);
draw_basic_square(x, y);
}
}
printf("\n");
return 0;
}
void gotoxy(int x, int y)
{
COORD Pos = { x - 1, y - 1 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}
void draw_basic_square(x, y)
{
unsigned char a = 0xa6, b[7], i;
for (i = 1; i < 7; i++)
b[i] = 0xa0 + i;
gotoxy(x, y);
printf("%c%c", a, b[3]);
gotoxy(x + 2, y);
printf("%c%c", a, b[4]);
gotoxy(x, y + 1);
printf("%c%c", a, b[6]);
gotoxy(x + 2, y + 1);
printf("%c%c", a, b[5]);
}
[4번 문제]
/*
[예제 3.5.3]을 이요하여 다음의 [그림 D]와 같이 가로 10, 세로 1인 직사각형과 가로1, 세로 10인 직사각형을 동시에 출력하는 프로그램을 작성한다
*/
#include <stdio.h>
void draw_rectangle(int column, int row);
int main(void)
{
draw_rectangle(1, 10);
draw_rectangle(10, 1);
return 0;
}
void draw_rectangle(int c, int r)
{
int i, j;
unsigned char a = 0xa6;
unsigned char b[7];
for (i = 1; i < 7; i++)
b[i] = 0xa0 + i;
printf("%c%c", a, b[3]);
for (i = 0; i < c; i++)
printf("%c%c", a, b[1]);
printf("%c%c", a, b[4]);
printf("\n");
for (i = 0; i < r; i++)
{
printf("%c%c", a, b[2]);
for (j = 0; j < c; j++)
printf(" ");;
printf("%c%c", a, b[2]);
printf("\n");
}
printf("%c%c", a, b[6]);
for (i = 0; i < c; i++)
printf("%c%c", a, b[1]);
printf("%c%c", a, b[5]);
printf("\n");
}
[5번 문제]
/*
[예제 3.5.4]를 이용하여 [그림 E]와 같이 실제 바둑판(가로 줄 19, 세로 줄 19)모양으로 출력합니다
*/
#include <stdio.h>
void draw_check01(int column, int row);
int main(void)
{
draw_check01(19, 19);
return 0;
}
void draw_check01(int c, int r)
{
int i, j;
unsigned char a = 0xa6;
unsigned char b[12];
for (i = 1; i < 12; i++)
b[i] = 0xa0 + i;
printf("%c%c", a, b[3]);
for (i = 0; i < c - 1; i++)
printf("%c%c", a, b[8]);
printf("%c%c", a, b[4]);
printf("\n");
for (i = 0; i < r - 1; i++)
{
printf("%c%c", a, b[7]);
for (j = 0; j < c - 1; j++)
printf("%c%c", a, b[11]);
printf("%c%c", a, b[9]);
printf("\n");
}
printf("%c%c", a, b[6]);
for (i = 0; i < c - 1; i++)
printf("%c%c", a, b[10]);
printf("%c%c", a, b[5]);
printf("\n");
}
[6번 문제]
/*
[예제 3.5.5]를 이용하여 [그림 F]와 같이 4*4 격자 모양에 1~16까지의 숫자를 출력하는 프로그램을 작성합니다
*/
#include <stdio.h>
#include <Windows.h>
void draw_check02(int column, int row);
void gotoxy(int x, int y);
int main(void)
{
int num = 1;
draw_check02(4, 4);
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
gotoxy(4 * (i + 1)-1, 2*(j+1));
printf("%d", num++);
}
}
printf("\n\n");
return 0;
}
void gotoxy(int x, int y)
{
COORD Pos = { x - 1, y - 1 };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}
void draw_check02(int c, int r)
{
int i, j;
unsigned char a = 0xa6;
unsigned char b[12];
for (i = 1; i < 12; i++)
b[i] = 0xa0 + i;
printf("%c%c", a, b[3]);
for (i = 0; i < c - 1; i++)
{
printf("%c%c", a, b[1]);
printf("%c%c", a, b[8]);
}
printf("%c%c", a, b[1]);
printf("%c%c", a, b[4]);
printf("\n");
for (i = 0; i < r - 1; i++)
{
printf("%c%c", a, b[2]);;
for (j = 0; j < c; j++)
{
printf(" ");
printf("%c%c", a, b[2]);
}
printf("\n");
printf("%c%c", a, b[7]);
for (j = 0; j < c - 1; j++)
{
printf("%c%c", a, b[1]);
printf("%c%c", a, b[11]);
}
printf("%c%c", a, b[1]);
printf("%c%c", a, b[9]);
printf("\n");
}
printf("%c%c", a, b[2]);
for (j = 0; j < c; j++)
{
printf(" ");
printf("%c%c", a, b[2]);
}
printf("\n");
printf("%c%c", a, b[6]);
for (i = 0; i < c - 1; i++)
{
printf("%c%c", a, b[1]);
printf("%c%c", a, b[10]);
}
printf("%c%c", a, b[1]);
printf("%c%c", a, b[5]);
printf("\n");
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
[참고] 명품 C언어 프로젝트 안기수 저
'C > 명품 C언어 프로젝트(안기수 저)' 카테고리의 다른 글
명품 C언어 프로젝트 3.7장 연습문제 (0) | 2017.06.28 |
---|---|
명품 C언어 프로젝트 3.6장 연습문제 (0) | 2017.06.23 |
명품 C언어 프로젝트 3.4장 연습문제 (0) | 2017.06.18 |
명품 C언어 프로젝트 3.3장 연습문제 (0) | 2017.06.16 |
명품 C언어 프로젝트 3.2장 연습문제 (0) | 2017.06.09 |