다중 반복문

반복문안에 반복문이 들어가는 형태를 다중 반복문이라 합니다. 이 부분은 안쪽 바깥쪽을 따로 분리시켜 하나로 합치는 방법으로 이해하면 프로그래밍도 쉽고 재미도 있습니다.

다음은 hello 를 몇 번 출력할 까요?

for( i = 1 ; i <=2 ; i++){
   for( j = 1 ; j <= 3 ; j++){
      printf("hello");
   }
}
총 6 번 출력합니다.
다음과 같은 별 모양을 출력하는 것으로 다중 반복문을 이해해 보자.
*******
*******
*******
*******
step1. 먼저 출력 할 줄 수를 결정 합니다. 다섯 줄 .
for( i = 1 ; i <= 5 ; i++){

   printf("\n");
}
step2. 각 줄 당 별이 7 개 출력됩니다.
for( j =1 ; j <= 7 ; j++){
   printf("*");
}
step3. step1 과 step2 를 합칩니다.


다음과 같은 별 모양을 출력하는 것으로 다중 반복문을 이해해 보자.
*****
****
***
**
*
방법 1
step1. 생각하는 방법은 먼저 몇 줄을 출력하는 가를 결정한다. 다섯 줄이다.
for( i = 1 ; i <= 5 ; i++){

   printf("\n");
}
step2. 각 줄당 어떻게 출력할 것인가... 이 경우에는 각 줄당 출력되는 별의 수가 가변적이므로 수 하나로 놓을 수가 없다. 이 경우 i 값을 이용해서 해결할 수 있다.

각 줄 당 5 - i + 1 개의 별을 출력하면된다.

for( j = 1 ; j <= 5-i+1 ; j++){
   printf("*");
}
step3: step1 과 step2 를 합칩니다.

방법 2
step1. 다섯 번 반복하는 것을 굳이 1 , 2, 3, ,4 ,5 로 갈수도 있지만 5,4,3,2,1 로 혹은 1 , 3 , 5, 7 , 9 로도 여러가지 방법이 있다.

이 경우 5 , 4 , 3 , 2 ,1 로 간다면

for( i = 5 ; i >= 1 ; i--){

   printf("\n");
}
step2. 각 줄당 i 개의 별을 출력하면 되므로
for( j = 1 ; j <= i ; j++){
   printf("*");
}
step3. step1 과 step3 를 합침.
출처:dovelet

[질/답]
[홈으로]  [뒤 로]
[푼 후(0)]