본문 바로가기
프로그래밍

[중첩반복문] 쉬운설명 if_else 를 이용한 for문 실습

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

Chapter1 반복문 중첩반복문 실습 

1. 별과 공란 출력 하기 (중첩반복문)

첫 번째 중첩반복문 실습건으로 아래 그림과 같이 * 출력과 함께 공란도 출력을 해보려 합니다. 

별 과 공란 출력 하기
별 과 공란 출력 하기

별은 기본적으로 2번째 for문을 이용하여 printf("*")만 적어도 출력이 되는데요. 

공란은 i와 j가 동일하게 0,1,2,3 일 때 공란임을 확인할 수 있습니다. 

반응형
int main(void) { 
int i,j;

for(i=0;i<4;i++)
 { 
	for(j=0;j<4;j++)
	{
		if(i==j) 
        {
		printf(" ");
		}
        else 
        {
        printf("*");
        }
	}
 printf("\n");
 }
}

 

아래는 scanf_s를 사용해 입력을 받은 만큼 '행'이 늘어나는 프로그램입니다.

 '열' 또한 늘리자고 한다면 int에 변수를 하나 더 선언하여 2번째 for문에 4대 신 입력해 주면 됩니다. 

int main(void) { 
int i,j;
int n; 
scanf_s("%d", &n); 

for(i=0;i<n;i++)
 { 
	for(j=0;j<4;j++)
	{
		if(i==j) 
        {
		printf(" "); 
		}
        else 
        {
        printf("*"); 
        }
	}
 printf("\n");
 }
}

2. 별만 특정 공간에 출력하기 (중첩반복문)

별만 특정 공간에 출력 하기
별만 특정 공간에 출력 하기

i=0, j=3 ; i=1, j=2 ; i=2, j=1 ; i=3, j=0  일 때마다 별을 출력해 주면 되는 것으로 

j == 3-1 일 때 별이 출력되면 되는 형태입니다. 

그럼 위와 같이 중첩반복문을 작성해 보겠습니다. 

int main(void) { 
int i,j;

for(i=0;i<4;i++)
 { 
	for(j=0;j<4;j++)
	{
		if(j==3-i) 
        {
		printf("*"); 
		}
        else 
        {
        printf(" "); 
        }
	}
 printf("\n");
 }
}

3. 특정 공간에 숫자 출력 하기 1 (중첩반복문)

특정 공간에 숫자 출력 하기 (중첩반복문)
특정 공간에 숫자 출력 하기 (중첩반복문)

int main(void) { 
int i,j;

for(i=0;i<4;i++)
 { 
	for(j=0;j<4;j++)
	{
		if(j==i) 
        {
		printf("%d", j); 
		}
        else 
        {
        printf(" "); 
        }
	}
 printf("\n");
 }
}

j와 i가 같을 때 j를 출력한다면 위와 같이 0 , 1 , 2 ,3 이 출력됩니다. 

반응형

4. 특정 공간에 숫자 출력 하기 2 (중첩반복문)

i가 0일 때 j가 3 이므로  i == 3-j를 사용하면 됩니다. 

int main(void) { 
int i,j;

for(i=0;i<4;i++)
 { 
	for(j=0;j<4;j++)
	{
		if(i==3-j) 
        {
		printf("%d", j); 
		}
        else 
        {
        printf(" "); 
        }
	}
 printf("\n");
 }
}

 

5. 특정 공간에 별, 공란 출력 하기 (중첩반복문)

특정 공간에 별 &#44; 공란 출력 하기
특정 공간에 별 , 공란 출력 하기

N을 입력받아 위와 같이 출력하실 수 있으신가요? 

Scanf_s를 입력하고 위에서 공란을 했던 방법을 이용하면 됩니다. 

int main(void) { 
int i,j;
int n; 
scanf_s("%d",&n);

for(i=0;i<n;i++)
 { 
	for(j=0;j<n;j++)
	{
		if(i==j) 
        {
		printf(" "); 
		}
        else 
        {
        printf("*"); 
        }
	}
 printf("\n");
 }
}

 

6. 중첩반복문 실습문제 1

1부터 10까지의 수들 각각에 대하여 1에서 그 수까지의 합들을 출력하시오. 

(3이라 하면 1+2+3 = 6 이 출력되어야 함) 

반응형

문제가 이해가 되십니까? 

  1. 일단 행이 10개가 발생될 것입니다. 1부터 10까지 (for문 i) 
  2. 그리고 1일 때는 1, 2일 때는 1+2, 3일 때는 1+2+3 이 더해지는(for문 j)
  3. Sum이 printf가 될 수 있도록 추가 for문을 작성합니다. 
  4. 그리고 Sum은 매번 초기화를 해야 1행에 값에 2행 값을 더한 것이 출력되는 형식이 아니게 됩니다. 

1:  0+1 = 1 

2 : 1+2 = 3

3 : 1+2+3 = 6

... 

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

중첩반복문 실습문제1
중첩반복문 실습문제1

 

7. 중첩반복문 실습문제 2 

양의 정수 n을 입력받은 뒤 n까지의!(팩토리얼)의 합을 계산하여 출력하시오. 

 

(예 : 5를 입력하면 1! + 2! + 3! + 4! + 5! = ) 

1  +1*2 +1*2*3 +1*2*3*4 + 1*2*3*4*5 = 

 5는 n이 되는 것이며 n이 for문 첫 번째 (기존 i처럼)가 됩니다. 

int main(void) { 
int n, i,j,sum,mul;

scanf_s("%d",&n);
sum = 0; 

for(i=1;i<=n;i++)
	{ 
	mul = 1;
	for(j=1;j<=i;j++)
		{
		mul = mul * j;
		}
	}
	sum = sum + mul; 
	printf("%d \n", sum);
 }

 


힘이 나는 글

기회는 기대했던 것과는 다른 방향에서, 다른 형태로 나타난다. 

기회는 이렇듯 가면을 쓰고 나타난다 

기회는 뒷문으로 슬그머니 들어오는 교활한 면이 있다. 

때로는 불운의 가면을 뒤집어쓰기도 하고 잠깐의 좌절이라는 형태를 띠기도 한다

그래서 많은 사람들이 기회를 알아보지 못하곤 한다. 

 

다비는 금이 나오기 1미터 전에 채굴을 그만뒀고 

채굴기를 샀던 고물상은 전문가의 조언을 듣고 1미터 아래의 금을 채굴해 막대한 돈을 벌었다. 

다비는 막대한 이득의 기회를 잃은 것이다. 

그러나 그는 다짐했다. "나는 금이 나오기 1미터 전에 그만뒀지"

"이제는 고객이 한번 거절했다고 해서 단념하지 않을 거야"라고 말이죠 

그리고 다비는 연간 100만 달러 이상의 수익을 올리는 성공한 보험 판매원이 되었습니다. 

 

성공이 찾아오기 전에 잠시의 실패가 먼저 찾아옵니다. 

패배가 우리를 잡아먹기 위해 다가오면, 가장 쉽고 논리적인 반응은 '그만두는 것이죠' 

그리고 대부분은 그렇게 합니다. 

그러나 미국에서 가장 성공한 500명이 넘는 사람은 이렇게 말했다. 

"완벽히 패배한 순간" 한 걸음 더 나아가는 것으로 성공을 이루었다고. 

실패는 교활하고 모순적인 사기꾼이다. 

"실패를 성공에 거의 도달했음을 알려주는 신호로 여기고 기뻐하라"

실패는 패배와 동의어가 아닙니다. 

실패는 그것과 똑같은 크기의 성공의 씨앗을 내포하고 있다고 말합니다. 


이상 Chapter1 반복문 중첩반복문 실습에 대한 내용이었습니다.

읽어주셔서 감사합니다. 

 

 

반응형

댓글