1부터 n까지 합 구하는 프로그램
#include <stdio.h> int main() { int i, n, sum; printf("1부터 얼마까지 합? \n"); scanf("%d", &n); sum = 0; for(i = 1; i <= n; i++) { sum = n + i; } printf("1부터 %d까지의 합: %d \n", n, sum); return 0; }
결과는!
잘 실행된다.
이번 예제에서 중요한 부분은
sum = 0;
이 문장인데,
만약 이 문장 없이 프로그램을 실행시키면?
'sum' 변수가 초기화 없이 사용되고 있다는 오류가 발생한다.
즉, 'sum' 변수를 0으로 초기화 해주지 않아서, 더미값으로 저장되어 있다는 뜻이다.
그래서 꼭! 초기화를 해야한다.
2~n까지 짝수의 곱 출력하기
필요한 변수:
제어변수 i
곱할 마지막 값: n
곱셈 결과: result
2~n까지의 곱은 result=result*i
#include <stdio.h> int main() { int i, n, result; printf("2에서 얼마까지의 짝수의 곱? \n"); scanf("%d", &n); result = 1; for(i = 2; i <= n; i = i+2) { result = result * i; } printf("2~%d까지의 짝수의 곱: %d \n", n, result); return 0; }
위에서 배운 내용과 마찬가지로,
'result' 변수는 1로 초기화를 시켜줘야 한다.
(곱셈이니깐)
ok
수열의 합 구하기
#include <stdio.h> int main() { int i, n; double sum; printf("1/1부터 1/n까지의 합"); scanf("%d", &n); sum = 0; for(i = 1; i <= n; i++) { sum = sum + (1.0/i); } printf("1/1 + 1/2 + 1/3 + ... + 1/n = %.2lf \n", sum); return 0; }
sum = sum + (1.0/i);
이 문장을 조심하자.
앞에서 'sum' 변수를 실수형 변수로 선언을 잘 해줘도,
sum = sum + (1/i);
이렇게 1/i로 표현 했다면, 결과 값은
이렇게 도출되는데..
우리는 기본 연산자에서
정수/정수=정수 를 배웠다.
1/2 부터는 1 아래로 값이 떨어지기 때문에 n값에 어떤 값이 들어가도 0으로 인식한다.
그래서 실수/정수 형태로 표현해줘야 결과 값도 실수값으로 도출된다.
1~100 중 3 또는 5의 배수 개수 구하기
#include <stdio.h> int main() { int i, n, count; printf("1부터 n까지 중 3또는 5의 배수 개수는? \n"); scanf("%d", &n); count = 0; for(i = 1; i <= n; i++) { if (i % 3 == 0 || i % 5 == 0) count++; } printf("%d개 입니다. \n", count); return 0; }
for문 안에 if문도 활용할 수 있구나
ok
남학생/여학생 수 구하기
#include <stdio.h> int main() { int boy, girl, reply, i; printf("남자면 1, 여자면 2를 입력하세요. \n"); boy = 0; girl = 0; for(i = 1; i <= 5; i++) { printf("%d번은 남자/여자?", i); scanf("%d", &reply); if (reply == 1) boy++; else if(reply == 2) girl++; } printf("\n남자 %d명, 여자 %d명 \n", boy, girl); return 0; }
계속
이렇게 나오길래 뭐가 잘못된건지 싶었는데,
for(i = 1; i <= 5; i++);
또 너냐..
세미콜론 실수 이제 그만하자..
이게 맞지.
삼각형으로 n층까지 만들려면 필요한 삼각형 개수는?
1층에는 1개, 2층에는 3개, 3층에는 5개...
층 하나 올라갈수록 2개씩 늘어간다.
이런 규칙을 이용해서 가보자.
#include <stdio.h> int main() { int i, floar, total; printf("몇층까지 만들건데? \n"); scanf("%d", &floar); total = 0; for (i = 1; i <= floar+2; i = i + 2) { total = total + i; } printf("%d층까지 필요한 삼각형 개수는 %d개 입니다.", floar, total); }
좋다.
근데 꼭 for문을 사용하지 않고, 만들 수도 있다.
이런식으로 반복문을 어떻게 사용해야 할 지 잘 떠오르지 않을 때
이런식으로 풀어서 코드를 작성해볼 수도 있다.
모든 층에 사용된 노랑/파랑 삼각형 개수는?
#include <stdio.h> int main() { int i, floar, yellow, blue, count; printf("n층까지 사용된 노랑/파랑 삼각형 개수는? \n"); scanf("%d", &floar); count = 1; yellow = 1; blue = 0; for (i = 1; i <= floar; i++) { yellow = floar + i; blue = yellow - i; } printf("%d층까지 필요한 파랑 삼각형은 %d개, 노랑 삼각형은 %d개 입니다.", floar, blue, yellow); }
노랑/파랑 삼각형 모두 올라갈수록 1개씩 늘어나지만,
1층에서는 노랑 삼각형 1개만 사용되었으니
1층 개수는 count로 미리 세주자!
for문 공부를 하면서 주의해야할 점,
실수했던 부분은 항상 조심 하자!