[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");
}
}
- scanf_s를 이용하기 위해 입력받을 변수 h를 추가합니다.
- 그리고 ****을 몇번 반복할 것이냐는 변수 h를 따라 가야 하므로 첫번째 while문에 h를 기입합니다.
- 그럼 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 포함에 대한 내용이였습니다.
읽어주셔서 감사합니다.
'프로그래밍' 카테고리의 다른 글
[중첩반복문] for문, while문, do-while문_쉬운 설명과 예시_쉼표연산자,break문,continue문 (0) | 2023.03.11 |
---|---|
[중첩반복문] 쉬운설명 if_else 를 이용한 for문 실습 (0) | 2023.03.11 |
EXCEL에서 CSV 파일 합치는 방법 [EXCEL RDB MERGE 다운 및 적용방법] (0) | 2023.02.25 |
[PERL] 1장 기초 PERL 프로그래밍 (1) | 2023.01.14 |
[피벗테이블] 피벗테이블 사용법 [예시와 함께 설명] 어떨 때 쓰는 걸까? (1) | 2023.01.09 |
댓글