다이아몬드 패턴 출력
C 언어의 for 반복문을 정리하는 예제로, 별표로 다이아몬드 모양을 만들 수 있습니다.
삼각형의 높이가 3인, 별표로 만든 다이아몬드 모양은 다음과 같습니다.
*
***
*****
***
*
별표로 다이아몬드 모양을 출력하는 가장 기본적인 소스는 다음과 같습니다.
코드: diamond_docs.c
#define _CRT_SECURE_NO_WARNINGS // scanf() 보안 경고에 따른 컴파일 에러 방지
#include <stdio.h>
int main(void)
{
int count = 0; // 높이 개수
int blank = 0; // 공백 개수
int block = 0; // 별표 개수
int height = 0; // 높이 번호
printf("다이아몬드 삼각형 높이 개수 입력: ");
scanf("%d", &count);
// 삼각형 출력 그룹
for (int i = 0; i < count; i++)
{
height = i + 1; // 높이 번호 계산
blank = count - height; // 출력할 공백 개수 계산
block = 2 * i + 1; // 출력할 별표 개수 계산
// 공백 출력
for (int j = 0; j < blank; j++)
{
printf(" ");
}
// 별표 출력
for (int k = 0; k < block; k++)
{
printf("*");
}
printf("\n");
}
// 역삼각형 출력 그룹: i = 1로 설정 주의
for (int i = 1; i < count; i++) // i 반복: 입력된 높이 개수만큼 반복
{
height = i + 1; // 높이 번호 계산(반복문에서 변수 i를 1부터 시작하면 필요없음)
block = (count * 2) - (height * 2 - 1); // 출력할 별표 개수 계산
// 공백 출력: (j < i) 조건에 따라서 공백 개수가 0, 1, 2로 증가
for (int j = 0; j < i; j++) // j 반복
{
printf(" ");
}
// 별표 출력: 별표 개수는 (count * 2) - (height * 2 - 1) => (..., 5, 3, 1)
for (int j = 0; j < block; j++) // k 반복: 별표 개수만큼 반복
{
printf("*");
}
printf("\n"); // 높이 줄바꿈
}
return 0;
}
다이아몬드 삼각형 높이 입력: 2
*
***
*
다이아몬드 삼각형 높이 입력: 3
*
***
*****
***
*
다이아몬드 삼각형 높이 입력: 5
*
***
*****
*******
*********
*******
*****
***
*
다이아몬드 삼각형의 높이가 3이 입력되었을 때에는 첫 번째 코드 블록에서는 다음과 같은 코드가 실행됩니다.
for (int i = 1; i <= 3; i++)
{
for (int j = i; j <= 3; j++)
{
printf(" ");
}
for (int k = 1; k <= 2 * i - 1; k++)
{
printf("*");
}
printf("\n");
}
*
***
*****
마찬가지로, 두 번째 코드 블록에서는 삼각형 밑부분의 역삼각형은 입력된 높이에서 1만큼 적게 반복하면 다음 코드가 실행됩니다.
for (int i = 3 - 1; i >= 1; i--)
{
for (int j = 3; j >= i; j--)
{
printf(" ");
}
for (int k = 1; k <= 2 * i - 1; k++)
{
printf("*");
}
printf("\n");
}
***
*
이렇게 2개의 for 반복문 그룹을 사용하여 삼각형과 역삼각형을 합친 모양으로 다이아몬드 모양을 출력할 수 있습니다.
추천 자료: ASP.NET Core 인증 및 권한 부여
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!