본문 바로가기
Coding/C

C언어 - for 반복문

by ZaRi 2023. 5. 12.

 

 이제 마지막으로 for 반복문에 대해 배워보겠습니다.

 기능은 while문과 같습니다.

 


for 반복문

for문의 기본적인 형태를 먼저 보여드리겠습니다.

 

 

형태 설명
for (A; B; C)
{
    종속절;
}
A: 초기식
B: 조건식
C: 변화식

초기식을 가지고 조건식을 비교하고 맞으면 종속절 실행 그리고 변화식을 거쳐 다시 조건식과 비교한다.

순서
A -> B -> 참 -> 종속절 -> C
-> B -> 참 -> 종속절 -> C
-> B -> 참 -> 종속절 -> C
......
-> B -> 거짓 -> for문 나옴.
ex)
for (int i = 0; i< 5; i++)
{
    printf("i 값: %d \n", i);
A에 변수 선언과 동시에 값 지정.
B에 조건식
C에 변화식
for (;;)
{
    종속절;
}
무한 루프가 일어남.

 

  for i in range() 를 써서 반복하는 파이썬의 for 문하고는 좀 다른 모습입니다.

 이것도 처음에는 형식이 어려울 수 있는데 하나하나 맞춰서 쓰다보면은 이해가 쉬울 것입니다.

 

 우선 ex)에 써있는 코드를 이제 저번에 배웠던 while문의 ex) 코드와 비교하면서 봐보겠습니다.

 먼저 while 문 코드를 봐보겠습니다.

 

 

 

#include <stdio.h>

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

	return 0;
}

 

 이게 while문 코드입니다. 이제 여기에 있는 초기식, 조건식, 변화식을 for문에 맞춰 바꾸어 보겠습니다.

 

 

 

#include <stdio.h>

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

 

 그러면 위와 같은 코드가 나옵니다. 

 이제 실행해 보겠습니다.

 

 

 

i-값이-0~4까지-출력됨
예시-결과

 

 그러면 저번과 결과가 같게 나온 것을 확인 할 수 있습니다.

 이처럼 while 문과 for문은 그 형태만 다를 뿐 기능은 같다는 것을 알 수 있었습니다.

 이 for 문은 중첩해서 사용하기도 합니다.

 

 

중첩 for 반복문

형태는 우선 다음과 같습니다.

 

 

형태
for (A; B; C)
{
    for(A; B; C)
    {
        종속절;
    }
    종속절;
}

 

 보게 되면 중첩이라는 말처럼 for문 안에 for문이 들어간 느낌입니다.

 만약 바깥 쪽의 for문이 2번 반복하고 안 쪽의 for문이 3번 반복한다고 한다면, 결과적으로 안쪽의 for문은 6번 반복하게 되는 것입니다.

 

 이를 이용해 간단한 활용을 해보겠습니다.

 

 

* 피라미드 만들기

코딩을 하면서 나오는 문제중에 하나인데 중첩 for 반복문을 사용하여 풀 수 있습니다

우선 코드는 다음과 같습니다.

 

 

 

#include <stdio.h>

int main()
{
	for (int i = 1; i < 11; i++)
	{
		for (int j = 10; j > i; j--)
		{
			printf(" ");
		}
		for (int j = 0; j < i * 2 - 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

 

 아마 처음 보게 되면 좀 어려우실 수도 있을 것 같습니다.

 하나하나 따라가 보거나 아니면 직접 만들어 보시는 것이 이해하기 더 쉬울 것입니다.

 그럼 결과를 한번 봐보겠습니다.

 

 

 

*이-하나부터-시작해서-아래로-피라미드처럼-쌓여진-모습이다.
*-피라미드

 

 피라미드가 만들어졌습니다.

 

 

 


 

 오늘은 반복문을 다 배우고 중첩 for 반복문까지 알아보았습니다.

 아마 많이 사용하시다 보면 더 이해 하기 쉬워질 것이라고 생각합니다.

 

댓글