C언어

이중 for문에 대한 이해

뀨린 2021. 1. 6. 17:42

 

문제풀기(1)

 

Input, Output의 예제를 참고하여, n층의 삼각형을 출력하는 프로그램을 작성하여라. 

 

입력

첫째 줄에 정수n이 주어진다. (0≤n≤100)

 

출력

다음 예제와 같이 삼각형 모양으로 ‘*’을 출력한다.

 

직각삼각형 만들기 1

 

#include <stdio.h>



int main()
{
  int n;
    scanf("%d", &n);

    for (int i = 1; i <= n; i++) //(1) 줄의 개수를 결정해주는 for문(줄바꿈을 위한 것) 
    {
        for (int j = 1; j <= i; j++) //(2) 별을 출력하는 for문 j가 i만큼 돌아서 삼각형 출력
        {
            printf("*");
        }
        printf("\n");
    }

    return 0;
}


(1) n행이 결정된다. 
(2)별의 개수를 정하는 for문으로 i값과 별을 찍는 개수가 같다. 

다시 (1)로! 각 행이 별을 다 출력하면 줄을 바꿔주고 다시 i를 증가시킨다.  

 

j 반복문이 반복하는 횟수는 바깥 i의 값을 포함한다. 그러므로 j(1)<=i(1)이라면 2번 반복이 실행된다. 
i가 2일 때 안쪽 반복문은 0~2까지 3번 반복

 

더보기

n=9라고 가정, 

(1)에서 i가 1일 때 i<=9를 만나고 증감값이 실행되지 않고 (2) for문으로 들어간다.  

두번째 for문에서 j값이 1인 상태에서 j<=i까지 돈다. (처음 별이 1개여야하니까) 
첫번째 별을 찍을 때, i=1, j=1인 상태에서 1<=1 만나면 아직 i랑 j랑 같으니까 한번 실행 (*)

j를 증가시키면, 비교할 때 i=1, j=2이니까 조건식에서 2<=1이 된다.  
2는 1보다 작으니까 (2)for문을 탈출해서, (1)for문에서 줄바꿈(/n)을 해주고 i++ 되고, 이 과정을 반복한다.