본문 바로가기

포트폴리오/c언어

[for문 별 찍기]프로그램

별 찍기 프로그램 - 복습 겸 연습

프로그래밍 입문 1학기 때 배운 내용을 복습할 겸, 간단한 별 찍기 프로그램을 만들어 보았습니다.
이 프로그램은 다양한 형태의 별 패턴(사각형, 직각삼각형, 피라미드 등)을 출력하며, 사용자의 선택에 따라 실행됩니다.


목차

  1. 프로그램 소개
  2. 실행 방법
  3. 주요 코드 설명
  4. 코드 전체 보기
  5. 자주 묻는 질문(FAQ)

1. 프로그램 소개

  • 이 프로그램은 사용자 입력에 따라 별 패턴을 출력합니다.
  • Windows 환경에서 실행되며, 콘솔 화면을 정리하거나 멈추는 기능(system("cls"), system("pause"))을 포함합니다.
  • 주요 기능:
    • 사각형 출력
    • 직각삼각형 출력(왼쪽, 오른쪽 정렬)
    • 피라미드 출력(정상 및 상하 반전)

2. 실행 방법

  1. 아래 코드를 컴파일 후 실행합니다.
  2. 메뉴에서 원하는 옵션을 선택합니다.
  3. 출력된 결과를 확인하세요.

3. 주요 코드 설명

전역 변수

  • i, j: 반복문에서 사용할 인덱스.
  • enter: 사용자 입력 값을 저장.
  • chose: 사용자가 선택한 메뉴 번호.

주요 함수

square(): 사각형 출력

1
2
3
4
5
6
7
8
9
10
11
12
13
int Pyramid() {
    printf("몇 단으로 쌓을 것인지 입력하세요: ");
    scanf("%d"&enter);
    for (i = 0; i < enter; i++) {
        for (j = enter - 1; j > i; j--) {
            printf(" ");
        }
        for (j = 0; j < 2 * i + 1; j++) {
            printf("*");
        }
        printf("\n");
    }
}
cs

ARTL(): 직각삼각형(왼쪽 정렬)

1
2
3
4
5
6
7
8
9
10
int ARTL() {
    printf("몇 단으로 쌓을 것인지 입력하세요: ");
    scanf("%d", &enter);
    for (i = 0; i < enter; i++) {
        for (j = 0; j < i + 1; j++) {
            printf("*");
        }
        printf("\n");
    }
}
cs

Pyramid() : 출력

1
2
3
4
5
6
7
8
9
10
11
printf("몇 단으로 쌓을 것인지 입력하세요: ");
    scanf("%d"&amp;enter);
    for (i = 0; i &lt; enter; i++) {
        for (j = enter - 1; j &gt; i; j--) {
            printf(" ");
        }
        for (j = 0; j &lt; 2 * i + 1; j++) {
            printf("*");
        }
        printf("\n");
    }
cs

4. 코드 전체

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
#include&lt;stdio.h&gt;
#include&lt;windows.h&gt;
 
int i,j;
//i는 첫 번쨰 for문에 사용될 변수,j는 두 번쨰 for문에 사용할 변수 
int enter;
//수를 입력받아 저장할 변수 
int chose;
 
int square();
int ARTL();
int ARTR();
int Pyramid();
int Rpyramid();
    
int main(void){
    
    system("cls");
    
    printf("피라미드 만드는 프로그램\n");
    printf("만든이 : 정철이\n");
    printf("블로그 주소 : https://wjdcjfdl.tistory.com/\n\n\n");
    for(;;){
        
        printf("------------------------------\n");
        printf("1번 : 사각형\n");
        printf("2번 : 직각삼각형(왼쪽정렬)\n");
        printf("3번 : 직각삼각형(오른쪽정렬)\n");
        printf("4번 : 피라미드\n");
        printf("5번 : 피라미드(상하반전)\n");
        printf("0번 : 종료\n");
        printf("------------------------------\n");
        printf("번호를 입력해주세요.\n");
        printf("------------------------------\n");
        
        scanf("%d",&amp;chose);
        printf("\n------------------------------\n");
        if(chose==1){
            
            square();
            system("cls");
            
        }else if(chose==2){
            
            ARTL();
            system("cls");
            
        }else if(chose==3){
            
            ARTR();
            system("cls");
            
        }else if(chose==4){
            
            Pyramid();
            
        }else if(chose==5){
            
            Rpyramid();
            system("cls");
            
        }else if(chose==0){
            
            printf("종료합니다.\n");
            return 0;
            
        } else{
            
            printf("그런 번호는 없습니다. 다시 시도해 주세요.\n");
            system("pause");
        }
        system("cls");
    }    
    return 0;
}
 
int square(){
    
    system("cls");
    
    printf("몇 단(세로줄의 수)으로 쌓을것인지 입력하세요.\n\n단수:");
    
    scanf("%d",&amp;enter);
    printf("\n");
    
    for(i=0;i&lt;enter;i++){
        for(j=0;j&lt;enter;j++){
            printf("*");
        }
        printf("\n");
    }
    printf("\n");
    system("pause");
}
 
int ARTL(){
    
    system("cls");
    
    printf("몇 단(세로줄의 수)으로 쌓을것인지 입력하세요.\n\n단수:");
    
    scanf("%d",&amp;enter);
    printf("\n");
    
    for(i=0;i&lt;enter;i++){
        for(j=enter-1;j&gt;=i;j--){
            printf(" ");
        }
        for(j=0;j&lt;i+1;j++){
            printf("*");
        }
        printf("\n");
    }
    
    printf("\n");
    system("pause");
}
 
int ARTR(){
    
    system("cls");
    
    printf("몇 단(세로줄의 수)으로 쌓을것인지 입력하세요.\n\n단수:");
    
    scanf("%d",&amp;enter);
    printf("\n");
    
    for(i=0;i&lt;enter;i++){
        for(j=0;j&lt;=i;j++){
            printf("*");
        }
        printf("\n");
    }
    
    printf("\n");
    system("pause");
}
 
int Pyramid(){
    
    system("cls");
    
    printf("몇 단(세로줄의 수)으로 쌓을것인지 입력하세요.\n\n단수:");
    
    scanf("%d",&amp;enter);
    printf("\n");
    
        for(i=0;i&lt;enter;i++){
            
            for(j=enter-1;j&gt;i;j--){
                
                printf(" ");
                
            }
            
            for(j=0;j&lt;2*i+1;j++){
                
                printf("*");
                
            }
            
            printf("\n");
            
        }
    printf("\n");
    system("pause");
}
 
int Rpyramid(){
    
    system("cls");
    
    printf("몇 단(세로줄의 수)으로 쌓을것인지 입력하세요.\n\n단수:");
    
    scanf("%d",&amp;enter);
    printf("\n");
    
    for(i=0;i&lt;enter;i++){
        
        for(j=0;j&lt;i;j++){
            
            printf(" ");
            
        }
        for(j=2*enter-1;j&gt;2*i;j--){
            printf("*");
        }
        printf("\n");
    }
    printf("\n");
    system("pause");
}
cs

5. 자주 묻는 질문(FAQ)

Q1. windows.h는 왜 포함되었나요?

  • 이 코드는 Windows 환경에서 실행되며, system("cls")와 system("pause")를 사용하기 위해 필요합니다.

Q2. 전역 변수를 사용하는 이유는 무엇인가요?

  • i, j, enter, chose 변수는 여러 함수에서 공통으로 사용되기 때문에 전역 변수로 선언했습니다.

Q3. 다른 플랫폼에서도 실행 가능한가요?

  • Windows에 의존적인 system() 함수는 다른 운영체제에서 작동하지 않습니다. 이 경우, 화면 정리 및 멈춤 코드를 대체해야 합니다.