본문 바로가기
c언어

c언어 for문 직접 사용해보면서 간단한 예제 풀어보기(1부터 임의의 수 n까지의 합 구하기, 세제곱 값 구하기, *로 네모 그리기, 팩토리얼 값 구하기(for문 이용), 팩토리얼 값 구하기(while문 이용)..

by 개발자 L 2022. 12. 4.
반응형

c언어 for문 직접 사용해보면서 간단한 예제 풀어보기(1부터 임의의 수 n까지의 합 구하기, 세제곱 값 구하기, *로 네모 그리기, 팩토리얼 값 구하기(for문 이용), 팩토리얼 값 구하기(while문 이용), *를 꽉 찬 사각형 모양으로 출력하기(중첩된 for문), * 증가시켜 출력하기(중첩된 for문)

네 안녕하세요, 이번 포스팅에서는 for문을 이용하여 여러가지 예제를 풀어보는 시간을 가져보려 합니다.

for문도 while문과 같이 정말 많이 사용이 되는 문법이기 때문에 잘 알아둬야 하는 문법이고,

손에 익어야지 잘 쓸 수 있습니다.

그리고 때에 따라서 while문으로도 변환을 할 수 있기 때문에 더 중요합니다.

그럼 바로 시작하도록 하겠습니다.

 

1. 1부터 임의의 수 n까지의 합 구하기

for문을 이용해도 1부터 임의의 수 n까지의 합을 구할 수 있습니다.

오히려 for문을 사용하는 것이 더 쉬울 수 있습니다.

그럼 바로 코드를 작성해보도록 하겠습니다.

#include <stdio.h>

int main()

{
    int n, sum = 0;

    printf("정수를 입력하세요 : ");
    scanf("%d", &n);

    for(int i = 1; i <= n; i++)
    {
        sum += i;
    }

    printf("1부터 %d까지의 정수의 합은 %d입니다.\n", n, sum);

    return 0;
}

이렇게 작성을 했습니다.

그리고 for문 안에서 변수의 자료형도 설정이 가능합니다.

필요에 따라서는 밖에서 미리 선언을 하지만,

저렇게 바로 쓰는 경우도 많습니다.

그럼 결과도 바로 보여드리겠습니다.

정수를 입력하세요 : 9
1부터 9까지의 정수의 합은 45입니다.

이렇게 잘 나오는 것을 볼 수가 있습니다.

 

2. 세제곱 값 구하기

이번에는 for문을 이용하여 세제곱 값을 구해보도록 하겠습니다.

세제곱 값을 구하는 방법도 그리 어렵지는 않습니다.

그럼 바로 보여드리도록 하겠습니다.

#include <stdio.h>

int main()

{
    int n;

    printf("정수를 입력하세요 : ");
    scanf("%d", &n);

    printf("    i   i의 세제곱\n");

    for(int i = 1; i <= n; i++)
    {
        printf("%5d %5d\n", i, i * i * i);
    }

    return 0;
}

이렇게 한 번 작성을 해봤습니다.

생각보다 어렵지 않습니다.

그냥 세제곱 하는 식만 출력을 해주면 바로 결과가 나옵니다.

그럼 결과를 한 번 보여드리도록 하겠습니다.

정수를 입력하세요 : 4
    i   i의 세제곱
    1     1
    2     8
    3    27
    4    64

본인이 입력한 숫자 범위만큼 세제곱 값이 출력이 되는 것을 볼 수가 있습니다.

 

 3. *로 네모 그리기

반복문을 이용하면 그림도 그릴 수 있습니다.

*을 이용하여 네모를 한 번 그려보도록 하겠습니다.

바로 코드를 작성해보도록 하겠습니다.

#include <stdio.h>

int main()

{
    int n;

    printf("정수를 입력하세요 : ");
    scanf("%d", &n);

    printf("**********\n");

    for(int i = 1; i <= n; i++)
    {
        printf("*        *\n");
    }

    printf("**********");

    return 0;
}

이렇게 작성을 할 수 있습니다.

그럼 결과도 한 번 같이 보시죠.

정수를 입력하세요 : 6
**********
*        *
*        *
*        *
*        *
*        *
*        *
**********

이렇게 우리가 입력한 숫자의 수 만큼 별을 찍어서 네모가 만들어진 것을 볼 수가 있습니다.

반응형

 

4. 펙토리얼 값 구하기(for문 이용)

반복문을 이용하면 팩토리얼 값도 구할 수 있습니다.

팩토리얼을 쓰는 방법은 우리가 1부터 임의의 수 n까지의 합을 구하는 과정에서 조금 변형만 하면 됩니다.

그럼 바로 코드를 한 번 작성을 해보도록 하겠습니다.

#include <stdio.h>

int main()

{
    int n;
    long factorials = 1;

    printf("정수를 입력하세요 : ");
    scanf("%d", &n);

    for(int i = 1; i <= n; i++)
    {
        factorials = factorials * i;
    }

    printf("%d!은 %d입니다.\n", n, factorials);

    return 0;
}

그렇게 어렵지 않습니다.

다만, 자릿수가 많아질 수 있어서 int 대신 결과는 long을 썼고, 곱셈이기 때문에 초기값을 절대 0으로 두면 안된다는 것만 명심하셔야 합니다.

초기값을 0으로 두면 그 결과는 어떤 것을 넣어도 0이 곱해져서 0이 나오기 때문입니다.

그럼 결과를 바로 보도록 하겠습니다.

정수를 입력하세요 : 6
6!은 720입니다.

이렇게 결과가 잘 나오는 것을 볼 수가 있습니다.

 

5. 펙토리얼 값 구하기(while문 이용)

이는 while문을 이용해서도 구현이 가능합니다.

for문은 범위가 정확하게 정해진 while문이라고 봐도 되기 때문에 변환할 수 있습니다.

그럼 바로 코드를 작성해보도록 하겠습니다.

#include <stdio.h>

int main()

{
    int n;
    long factorials = 1;

    printf("정수를 입력하세요 : ");
    scanf("%d", &n);

    int i = 1;
    
    while(i <= n)
    {
        factorials = factorials * i;
        i++;
    }

    printf("%d!은 %d입니다.\n", n, factorials);

    return 0;
}

이렇게 한 번 작성을 해봤습니다.

while문으로 바꿔도 크게 어려운 부분은 존재하지 않습니다.

그럼 바로 결과도 보도록 하겠습니다.

정수를 입력하세요 : 3
3!은 6입니다.

이렇게 결과도 잘 나오는 것을 볼 수가 있습니다.

 

6. *를 꽉 찬 사각형 모양으로 출력하기(중첩된 for문)

이 경우는 중첩된 for문을 이용해야 합니다.

그 이유는 사각형을 출력한다는 것은 x축과 y축을 출력해야 한다는 것이기 때문에 이중 for문을 사용을 해야 합니다.

그럼 바로 보여드리도록 하겠습니다.

#include <stdio.h>

int main()

{
    int n, m;

    printf("두 개의 정수를 입력하세요 : ");
    scanf("%d %d", &n, &m);

    for(int y = 0; y < n; y++)
    {
        for(int x = 0; x < m; x++)
        {
            printf("*");
        }
        printf("\n");
    }
    
    return 0;
}

이렇게 작성을 해봤습니다.

개행은 y축이 담당하고, * 출력은 x축이 담당합니다.

그래서 y축이 옮겨질 때마다 x축이 작업을 실행합니다.

그럼 결과를 보도록 하겠습니다.

두 개의 정수를 입력하세요 : 4 5
*****
*****
*****
*****

이렇게 잘 나온 것을 볼 수가 있습니다.

 

7. * 증가시켜 출력하기(중첩된 for문)

이 경우에도 중첩된 for문을 이용하여 출력을 해야 합니다.

큰 for문이 증가를 할 때 마다 작은 for문이 *을 찍게 만들어야 하기 때문입니다.

그럼 바로 코드를 작성을 해보도록 하겠습니다.

#include <stdio.h>

int main()

{
    int n;

    printf("두 개의 정수를 입력하세요 : ");
    scanf("%d", &n);

    for(int y = 0; y <= n; y++)
    {
        for(int x = 0; x < y; x++)
        {
            printf("*");
        }
        printf("\n");
    }
    
    return 0;
}

이렇게 작성을 했습니다.

이 경우에는 큰 for문에 입력이 되는 숫자(n)가 *이 찍히는 최댓값이 되므로,

작은 for문은 y보다 작아야 1씩 증가되어 찍히는 *의 형태를 가지게 됩니다.

그래서 큰 for문은 범위를 '이하'로 잡았고, 작은 for문은 '미만'으로 범위를 잡았습니다.

그럼 결과도 바로 보도록 하겠습니다.

숫자를 입력하세요 : 5

*
**
***
****
*****

이렇게 잘 찍혔음을 볼 수 있습니다.

이제 여러분들은 for문을 자유롭게 쓸 수 있습니다.

 

여기까지 for문을 직접 써보며 실력을 키우는 시간을 가져봤습니다.

다음 포스팅에서는 break, continue, goto문에 대하여 알아보도록 하겠습니다.

긴 글 읽어주신 독자분들께 진심으로 감사드립니다 ~

반응형

댓글