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문에 대하여 알아보도록 하겠습니다.
긴 글 읽어주신 독자분들께 진심으로 감사드립니다 ~
'c언어' 카테고리의 다른 글
c언어 반복문(for문, while문) 이용하여 여러 가지 문제 풀어보기(최대공약수 찾기, 반감기 구하기, 숫자 추측하기 게임 만들기, 직각 삼각형 찾기, 복리 이자 계산하기, 수학 문제 자동으로 생성.. (0) | 2022.12.04 |
---|---|
c언어 break문, goto문, continue문 알아보기(재테크, 주식, 코인 매매 자동화) (0) | 2022.12.04 |
c언어 for문 알아보기 (0) | 2022.12.04 |
c언어 do_while문 알아보기 (0) | 2022.12.04 |
c언어 반복문 루프에서 보초 값 사용하기(while문, 성적의 평균 구하기) (0) | 2022.12.04 |
댓글