주사위의 개발일지
  • [C언어] for문 예제 별찍기/별탑 쌓기
    2023년 08월 04일 23시 16분 06초에 업로드 된 글입니다.
    작성자: 주사위 clice
    반응형

    🎲 1. 문제

    N을 입력 받고 이렇게 출력되도록 하여라

     

    🎲 2. 알고리즘 짜기

    예제를 보고 규칙을 찾아야 한다. 

    N=10일때 

    1. 총 줄의 수는 10개이다.

    2. 맨 아래 줄은 1개, 그 위는 3개... 21개 이런 식으로 2개씩 증가한다

    3. 맨 첫번째 줄은 Nx2-1개 이다

    4. 공백은 첫번째 줄 0개, 두번째 줄 1개, 세번째 줄 2개... 이런식으로 증가한다.

     

    for 문을 중첩하여 사용하면 된다. 

     

     

    🎲 3. 코드

    코드를 찬찬히 작성해보자.

    1). 사용자에게 총 줄의 수를 입력받는다. &를 이용하여 lines에 저장한다.

    printf("N=");
        scanf("%d", &lines);
     

    2) 첫번째 줄의 별* 개수는 nx2-1개이다. 이를 변수 n으로 저장한다.

    int n = (lines * 2 - 1);
     

    n이 해당 줄의 별의 개수가 될 것이다.

     

    3) 가장 바깥쪽 for문

    for (i = n; i > 0; i -= 2) 
     

    i=n에 대입한다. 별찍는 개수이다(i=n)

    별의 개수는 홀수 개이기 때문에 줄이 바뀔때마다 별의 개수가 2개씩 줄어든다(i-=2)

    마지막 별의 개수는 1개이며, 음수가 되면 별을 찍지 않고 코드가 종료된다.( i>0)

     

            for (j = 1; j <= i; j++) {
                printf("*");
            }
     

    한줄에 별을 출력하는 코드이다. j=i가 될때까지, 즉 한 줄에 i개만큼 별을 출력한다. 

    for (i = n; i > 0; i -= 2) {
           
            for (j = 1; j <= i; j++) {
                printf("*");
            }
            
            printf("\n");
            
     
    for (k = n; k >=i; k -= 2) {
                printf(" ");
            }

     

    해당 규칙을 토대로 짠 코드를 모아보면

    완성된 코드는 다음과 같다.

     

     

     

    🎲 4. 완성된 코드

    #include <stdio.h>
    
    int main(void) {
        int i, j, k, lines;
        
        printf("N=");
        scanf("%d", &lines); 
        
        int n = (lines * 2 - 1);
        
        for (i = n; i > 0; i -= 2) {
           
            for (j = 1; j <= i; j++) {
                printf("*");
            }
            
            printf("\n");
            
            for (k = n; k >=i; k -= 2) {
                printf(" ");
            }
        }
        
        return 0;
    }
    
     

    #include <stdio.h>

     

    int main(void) {

    int i, j, k, lines;

     

    printf("N=");

    scanf("%d", &lines); 

     

    int n = (lines * 2 - 1);

     

    for (i = n; i > 0; i -= 2) {

     

    for (j = 1; j <= i; j++) {

    printf("*");

    }

     

    printf("\n");

     

    for (k = n; k >=i; k -= 2) {

    printf(" ");

    }

    }

     

    return 0;

    }

    반응형
    댓글