본문 바로가기
프로그래밍

[중첩반복문] for문 while문 if_else 포함

by 스텔라게이트 2023. 3. 10.

[Chapter 1 반복문] 중첩반복문

[Chapter 1 반복문] 중첩반복문 for문 while문 if_else 에 대하여 알아보겠습니다. 

 

일반적으로 중첩반복문을 바로 사용하지 않고 반복문을 사용하여 프로그램을 작성한 다음 

반복문을 추가로 더 사용함으로써 중첩반복문을 작성하시는 방법이 사용하기에 더 편리합니다.

반응형

while문  중첩반복문 

int main(void) { 
int i;
i = 0;
while(i<5)
	{
	printf("**** \n");
	i++; 
	}
}

여기 기본 반복문에서 중첩 반복문으로 변경 해보겠습니다. 

별 4개를 출력하기 위한 반복문을 작성하는 것입니다. 

int main(void) { 
int i,j;
i = 0;
while(i<5)
	{
	j=0; 
    while(j<4) 
    	{
		printf("*");
    	j++;
    	}
	i++; 
    printf("\n");
	}
}

*을 4번 출력하기 위하여 j를 선언 하고 j=0을 적어주어 명확히 해 줍니다. 

그리고 기존 while문에 이어 위와 같이 작성해 줍니다. 

그럼 ****이 총 5줄이 작성되며 기존과 같은 결과물이 나옵니다. 

그럼 여기서 응용한번 해보겠습니다. 

[while문] 중첩반복문 응용1

그럼 이 ****을 반복하는 개수를 입력받아 출력하는 프로그램을 만들어 봅시다. 

scanf 로 어떤 값을 받아서 5를 받았다면, 5줄을 출력하고, 7을 받았다면 7을 출력하는 방식입니다. 

int main(void) { 
int i,j,h;
i = 0;
scanf_s("%d",&h);

while(i<h)
{
	j=0; 
    while(j<4) 
    {
	printf("*");
    j++;
    }
	i++; 
    printf("\n");
}
}
  1. scanf_s를 이용하기 위해 입력받을 변수 h를 추가합니다. 
  2. 그리고 ****을 몇번 반복할 것이냐는 변수 h를 따라 가야 하므로 첫번째 while문에 h를 기입합니다. 
  3. 그럼 h에 기입된 수만큼 ****을 출력하게 됩니다. 

반응형

[while문] 중첩반복문 응용2

int main(void) { 
int i,j,h,w;
i = 0;
scanf_s("%d",&h);
scanf_s("%d",&w);
while(i<h)
{
	j=0; 
    while(j<w) 
    {
	printf("*");
    j++;
    }
	i++; 
    printf("\n");
}
}

여기서 몇 개의 별을 출력하고 싶은지에 대하여서 입력받아 정하고자 한다면

위와 동일한 방법으로 scanf_s를 추가하면서 변수를 한개 더 선언 

그리고 기존 j<4에서 j<변수 로 변경하여 값을 도출해 낼 수 있습니다. 

[while문] 중첩반복문 응용3

자 실제로 **** 보다는 숫자를 이용한 중첩반복문이 많을 것 입니다. 

아래와 숫자를 이용해 같이 한번 작업을 해봅시다. 

문제 " 0123 을 5줄 작성하시오 " 

 

int main(void) { 
int i;
i = 0;

while(i<5)
{
 printf("0123\n"); 
 i++;
}
}

이렇게 기본적인 포멧에서  0 1 2 3 을 while문을 사용하여 중찹반복문을 만들어 봅시다. 

0 1 2 3 을 반복문으로 만들려면 함수를 한개 더 선언하고 (ex: j) j 라고 할 시 

while (j <4) {
printf ("%d", j);
j++; 
}

위와 같이 식을 적용하여 변경해 보겠습니다. 

int main(void) { 
int i,j;
i = 0;
while(i<5)
{
 j=0;
 while(j<4)
 { 
  printf("%d", j);
  j++; 
 }
 printf("\n");
 i++;
}
}

j 가 0일때 시작해서 0123이 i<5 까지 반복되는 프로그램으로 

만약에 printf에 j 대신 i가 들어간다면 어떻게 될까요? 

반응형

j는 0,1,2,3 늘어가지만 i는 0으로 그대로이므로 0000, 다음줄, 1111, 다음줄, 2222, 다음줄, 3333, 다음줄, 4444 이런식으로 출력 될 것입니다. 

그리고 j 대신 i+j가 들어가면 어떻게 될까요? 

첫줄은 i=0일때 j도 0,1,2,3이 출력되며 처음 출력했던 프로그램과 동일하지만 

i=1일때 j도 0,1,2,3 은 동일 합니다. i+j가 되니 두번째 줄은 1,2,3,4 가 되는 것입니다. 

바로 이런식이죠. 

 

이번에는 for문 중첩반복문을 작성해 보겠습니다. 

for문 중첩반복문

자 그럼 for문을 사용해 위에서 작업했던 내용과 동일하게 만들어 보겠습니다. 

int main(void) { 
int i,j;
for(i=0;i<5;i++)
 { 
	for(j=0;j<4;j++)
	{
		printf("*");
	}
 printf("\n");
 }
}

[for문] 중첩반복문 응용1

scanf_s를 사용하여 *(별)의 개수와 줄의 수를 정하는 방법입니다. 

 

int main(void) { 
int i,j;
int h,w;
scanf_s("%d", &h);
scanf_s("%d", &w);
for(i=0;i<h;i++)
 { 
	for(j=0;j<w;j++)
	{
		printf("*");
	}
 printf("\n");
 }
}

7줄 9개별 이 되는 것으로 아래 그림과 같은 결과를 얻을 수 있습니다. 

[for문] 중첩반복문 응용2

0123 출력하기 

int main(void) { 
int i,j;
for(i=0;i<5;i++)
 { 
	for(j=0;j<4;j++)
	{
		printf("%d", j);
	}
 printf("\n");
 }
}

그럼 0123 출력 이후 한칸 띄우고 다시 0123이 출력되는 형태로 총 5줄이 작성됩니다. 

여기서 위에 작업했던 while 문 처럼 변경이 가능합니다. 

즉 j 대신 i를 넣어 0000, 1111, 2222, 3333, 4444 식의 프로그램을 짜거나 

j 대신 i+j를 작성하여 0123, 1234, 2345, 3456, 4567을 출력하실 수 있습니다. 

 

이상으로 [Chapter 1 반복문] 중첩반복문 for문 while문 if_else 포함에 대한 내용이였습니다.

읽어주셔서 감사합니다. 

 

반응형

댓글