프로그램 설명
이 프로그램은 사용자가 입력한 행(row) 수만큼 별(*) 문자를 이용해 왼쪽 화살표와 오른쪽 화살표 패턴을 콘솔 화면에 출력하는 C 언어 예제입니다. 중첩 for 반복문으로 각 행마다 출력할 공백과 별표의 개수를 조절하여 원하는 모양을 만들어 냅니다.
알고리즘
먼저 왼쪽 및 오른쪽 화살표 패턴을 출력할 행의 개수를 입력받습니다. 이후 다음 순서대로 패턴을 출력합니다.
1. 별표(*)로 화살표의 윗부분 패턴을 출력한다 2. 별표(*)로 역직각삼각형 패턴을 출력한다 3. 별표(*)로 화살표의 아랫부분 패턴을 출력한다 4. 별표(*)로 정직각삼각형 패턴을 출력한다
패턴 구조 이해하기
왼쪽 화살표는 윗부분이 공백이 점점 줄어들고 별표가 늘어나는 역직각삼각형, 아랫부분은 그 반대인 정직각삼각형으로 구성됩니다. 오른쪽 화살표는 각 행마다 2×(행−1)개의 공백을 먼저 출력한 뒤 별표를 찍어 오른쪽으로 밀린 형태를 만듭니다.
예제 코드
/*Program to print the Left and right arrow pattern*/
#include<stdio.h>
int main() {
int r, c, rows; //Left Arrow Pattern
int r1, c1, rows1; //Right Arrow Pattern
clrscr();
printf("Enter number of rows to print the Left Arrow Pattern: ");
scanf("%d", &rows);
printf("\n");
printf("The Left Arrow Pattern is:");
printf("\n");
for(r=1; r<rows; r++){
for(c=1; c<=(rows-r); c++){
printf(" ");
}
for(c=r;c<=rows; c++){
printf("*");
}
printf("\n");
}
for(r=1; r<=rows; r++){
for(c=1; c<r; c++){
printf(" ");
}
for(c=1; c<=r; c++){
printf("*");
}
printf("\n");
}
printf("Enter number of rows to print the Right Arrow Pattern: ");
scanf("%d", &rows1);
printf("\n");
printf("The Right Arrow Pattern is:");
printf("\n");
for(r1=1; r1<rows1; r1++){
for(c1=1; c1<=(2*r1-2); c1++){
printf(" ");
}
for(c1=r1; c1<=rows1; c1++){
printf("*");
}
printf("\n");
}
for(r1=1; r1<=rows1; r1++){
for(c1=1; c1<=(2*rows1 - 2*r1); c1++){
printf(" ");
}
for(c1=1; c1<=r1; c1++){
printf("*");
}
printf("\n");
}
getch();
return 0;
}
위 코드에서 외부 반복문은 행을 제어하고, 내부 반복문은 각 행에 출력할 공백과 별표의 개수를 담당합니다. 참고로 clrscr()과 getch()는 Turbo C 계열 컴파일러 전용 함수이므로, 최신 GCC 같은 환경에서는 #include<conio.h>를 추가하거나 두 함수를 제거하고 getchar()로 대체하면 됩니다.
실행 결과

