카테고리 없음

C로 별찍기 연습

오리@ 2017. 12. 31. 02:40

1) 피라미드


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
#include <stdio.h>
 
void main()
{
 
   int line;
   int star;
   int vp;
 
   for (line=1; line < 6; line++) {
 
 
      for (vp=0; vp <= - line; vp++) {
         printf(" ");
      }
 
      for (star=0; star < (* line) - 1; star++) {
         printf("*");
      }
 
      printf("\n");
 
   }
   
}
cs



2. 다이아몬드 (5줄)



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
#include <stdio.h>
 
void main()
{
 
   int line = 0// 줄 갯수
   int star = 1// 별의 갯수 
   int vp = 1// 빈공간 갯수
   int branchPoint = 3// 다이아몬드 가로 반지름(증가, 감소 분기점)
 
 
   for (line = 1; line < 6; line++) {
 
      int i = 0;
      int j = 0;
 
      if (line == branchPoint + 1) { //만약 4로 넘어가면 star와 vp 변수를 초기화 시킴
 
         star = 2;
         vp = 2;
 
      }
 
      if (line <= branchPoint) { //현재 line 번호 가 반지름에 해당하는 라인 번호보다 작을 경우는 : 별은 증가하고, 빈 공간은 감소한다. (상단부)
 
 
         for (i = 0; i < 4-vp; i++) {
            printf(" ");
         }
 
         vp++;
 
      
 
         for (j = 0; j < (* star) - 1; j++) {
            printf("*");
         }
 
         star++;
      }
 
      else { //만약 line 번호가 반지름에 해당하는 라인 번호 보다 커진다면 : 빈 공간은 증가하고 별은 감소한다. (하단부)
 
         for (i = 0; i < vp; i++) {
            printf(" ");
         }
         
         vp++;
 
         for (j = 0; j < (* star) - 1; j++) {
            printf("*");
         }
         star--;
 
      }
 
      //모든 for문이 돌고 난 후 한 칸 띄우기
      printf("\n");
 
   }
 
}
cs



3. 원하는 홀수 줄 입력받아서 다이아몬드 만들기


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
#include <stdio.h>
 
void main()
{
    int line = 0// 줄 갯수
    int star = 1// 별의 갯수 
    int vp = 1// 빈공간 갯수
    
    //입력 받는 부분
    printf("******************* 신기하고 재미있는 별찍기 프로그램 *******************");
    puts("");
    printf("출력할 라인 수를 입력하세요.");
    puts("");
    scanf_s("%d"&line);
 
    //유효성 검사
    if (line % == 0) {
        printf("홀수가 아닙니다. 홀수만 입력해 주세요~");
        puts("");
        return;
    }
 
    //입력 받은 숫자 확인
    printf("출력할 라인 수 : %d", line);
    puts("");
 
 
 
    int branchPoint = (line/2)+1// 다이아몬드 가로 반지름(증가, 감소 분기점)
 
    int s;
 
    for (s = 1; s < line+1; s++) {
 
        int i = 0;
        int j = 0;
 
        if (s == branchPoint + 1) { //만약 분기점 넘어가면 star와 vp 변수를 초기화 시킴
 
            star = branchPoint-1;
            vp = branchPoint-1;
 
        }
 
        if (s <= branchPoint) { //현재 line 번호 가 반지름에 해당하는 라인 번호보다 작을 경우는 : 별은 증가하고, 빈 공간은 감소한다. (상단부)
 
 
            for (i = 0; i < (line-1- vp; i++) {
                printf(" ");
            }
 
            vp++;
 
            for (j = 0; j < (* star) - 1; j++) {
                printf("*");
            }
 
            star++;
            
        }
 
        else { //만약 line 번호가 반지름에 해당하는 라인 번호 보다 커진다면 : 빈 공간은 증가하고 별은 감소한다. (하단부)
 
            for (i = 0; i < vp; i++) {
                printf(" ");
            }
 
            vp++;
 
            for (j = 0; j < (* star) - 1; j++) {
                printf("*");
            }
            star--;
 
        }
 
        //모든 for문이 돌고 난 후 한 칸 띄우기
        printf("\n");
 
    }
 
}
cs