티스토리 뷰
2중, 3중 for문을 사용하면 더 복잡한 형태의 별찍기 패턴을 만들 수 있어요. 이번에는 2중 for문과 3중 for문을 활용한 별찍기 예제를 보여드릴게요.
1. 2중 for문 예시: 직사각형 별찍기
먼저, 2중 for문을 사용해 간단한 직사각형 모양의 별찍기 패턴을 만들어볼게요.
예시
*****
*****
*****
코드
#include <stdio.h>
int main() {
int i, j, rows = 3, cols = 5;
for (i = 0; i < rows; i++) { // 행 반복
for (j = 0; j < cols; j++) { // 열 반복
printf("*");
}
printf("\n"); // 한 행이 끝나면 줄 바꿈
}
return 0;
}
설명:
2중 for문에서 바깥쪽 반복문은 행을, 안쪽 반복문은 열을 담당하며 각 행에 열만큼의 별을 출력합니다.
2. 3중 for문 예시: 피라미드 여러 개 출력하기
이번에는 3중 for문을 사용해 여러 개의 피라미드를 출력해볼게요. 2개의 피라미드 모양을 차례로 출력하는 예제입니다.
출력 형태:
*
***
*****
*******
*
***
*****
*******
코드
#include <stdio.h>
int main() {
int i, j, k;
int numPyramids = 2; // 피라미드 개수
int height = 4; // 각 피라미드의 높이
for (k = 0; k < numPyramids; k++) { // 피라미드 개수만큼 반복
for (i = 1; i <= height; i++) { // 각 피라미드의 높이만큼 반복
for (j = 1; j <= height - i; j++) {
printf(" "); // 공백 출력
}
for (j = 1; j <= 2 * i - 1; j++) {
printf("*"); // 별 출력
}
printf("\n");
}
}
return 0;
}
설명:
3중 for문에서 바깥쪽 반복문은 피라미드의 개수를 담당하고, 중간 반복문은 각 피라미드의 높이를 담당합니다. 안쪽 반복문은 각 줄에 공백과 별을 출력하는 역할을 해요.
3. 왼쪽 정렬된 역직각삼각형
역직각삼각형 모양의 별찍기 예제를 만들어볼게요. 별이 점점 줄어드는 패턴을 구현할 수 있습니다.
출력 형태:
*****
****
***
**
*
코드
#include <stdio.h>
int main() {
int i, j, n;
printf("출력할 줄 수를 입력하세요: ");
scanf("%d", &n);
for (i = n; i >= 1; i--) {
for (j = 1; j <= i; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
4. 다이아몬드 모양
이번에는 다이아몬드 모양을 출력해볼게요. 위쪽과 아래쪽으로 대칭되는 형태의 별을 출력합니다.
출력 형태:
*
***
*****
*******
*****
***
*
코드
#include <stdio.h>
int main() {
int i, j, n;
printf("출력할 줄 수를 입력하세요: ");
scanf("%d", &n);
// 위쪽 피라미드
for (i = 1; i <= n; i++) {
for (j = 1; j <= n - i; j++) {
printf(" ");
}
for (j = 1; j <= 2 * i - 1; j++) {
printf("*");
}
printf("\n");
}
// 아래쪽 피라미드
for (i = n - 1; i >= 1; i--) {
for (j = 1; j <= n - i; j++) {
printf(" ");
}
for (j = 1; j <= 2 * i - 1; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
5. 오른쪽 정렬된 역직각삼각형
오른쪽으로 정렬된 역직각삼각형도 출력해볼 수 있습니다. 공백과 별을 조합하여 모양을 만듭니다.
출력 형태:
*****
****
***
**
*
코드
#include <stdio.h>
int main() {
int i, j, n;
printf("출력할 줄 수를 입력하세요: ");
scanf("%d", &n);
for (i = n; i >= 1; i--) {
for (j = 1; j <= n - i; j++) {
printf(" ");
}
for (j = 1; j <= i; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
6. 사각형 모양 별찍기
가로와 세로가 동일한 크기의 사각형을 출력하는 예제입니다. 단순한 2중 for문을 사용하여 구현할 수 있습니다.
출력 형태:
*****
*****
*****
*****
*****
코드
#include <stdio.h>
int main() {
int i, j, n;
printf("출력할 크기를 입력하세요: ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
7. 빈 사각형 모양
이제 사각형 내부가 빈 모양을 만들어보겠습니다. 테두리 부분만 별로 출력하는 패턴입니다.
출력 형태:
*****
* *
* *
* *
*****
코드
#include <stdio.h>
int main() {
int i, j, n;
printf("출력할 크기를 입력하세요: ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
if (i == 1 || i == n || j == 1 || j == n) {
printf("*");
} else {
printf(" ");
}
}
printf("\n");
}
return 0;
}
8. 숫자로 된 삼각형 패턴
이번에는 별 대신 숫자를 사용하여 삼각형 패턴을 출력해볼게요.
출력 형태:
1
22
333
4444
55555
코드
#include <stdio.h>
int main() {
int i, j, n;
printf("출력할 줄 수를 입력하세요: ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
for (j = 1; j <= i; j++) {
printf("%d", i);
}
printf("\n");
}
return 0;
}
마무리
이렇게 다양한 패턴의 별찍기 예제를 통해 C언어에서 반복문과 조건문의 활용을 익힐 수 있습니다. 여러 가지 모양을 연습해보면서 응용력을 키우는 것이 중요합니다. 반복문을 제대로 이해하면 더 복잡한 모양도 쉽게 구현할 수 있답니다.
추가 팁
- 패턴의 공백과 별의 개수를 조절하면서 더 복잡한 모양을 만들어보세요.
- 자신만의 패턴을 만들고 그 패턴을 C언어로 구현하는 연습을 해보는 것도 좋습니다.
- 프로그래밍의 기초를 다지기 위한 좋은 연습이므로 다양한 변형을 시도해보세요!
'프로그래밍 > C언어 배우기' 카테고리의 다른 글
C언어 배우기 -13 함수 (2) | 2024.09.15 |
---|---|
C언어 반복문 별찍기 예제 모음 (0) | 2024.09.11 |
C언어 배우기 -12. 2차원 배열 (6) | 2024.09.05 |
C언어 배우기 -11. 배열 (7) | 2024.09.04 |
C언어 [Code up 문제] 1275 : k 제곱 구하기 반복문 문제 (정답 및 해설) (0) | 2021.01.07 |
- Total
- Today
- Yesterday
- C언어 배우기
- Repl.it
- 프로그래머
- printf
- C언어란?
- 온라인 프로그래밍
- 프로그래밍 입문
- stdio.h
- 출력함수
- C언어
- 프로그래밍입문
- 프로그래밍
- 프로그래밍 추천
- repl.it 사용법
- 온라인 코딩
- 코딩
- 사용법
- 개발
- C언어기본
- 개발환경
- include
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |