처음 해보는 프로그래밍 공부 포스팅인 것 같다.
아무래도 공적인 느낌보다는 개인적인 성취를 위해 작성하는만큼 경어를 사용하지 않으려고 한다.
또한 같은 이유로 보통 C언어를 공부하는 순서대로의 포스팅이 안 될 수도 있다.
처음으로 포스팅 해 볼 오늘의 성취는 for문을 이용한 팩토리얼, 그러니까 계승의 출력이다.
고등학교 수학 '확률과 통계'에서 쉽게 접해본 경험이 있을 것이다.
팩토리얼이란 n이란 수부터 1까지 곱해나가는 것을 말하며 !으로 표현한다.
즉, n!은 n 팩토리얼 또는 n의 계승이라고 읽으며 n × (n-1) × (n-2) × ... 3 × 2 × 1 의 느낌으로 계산한다.
이 팩토리얼, 계승이라는 녀석은 반복문의 예제로 굉장히 많이 사랑받고 있는 것 같다.
사용중인 교재는 오렌지 미디어 출판사에서 나온 '윤성우의 열혈 C 프로그래밍' 교재이다.
그 교재에 문제로 수록되어 있던 것으로 직접 과제 해결을 위해 작성한 코드임을 미리 밝힌다.
#소스코드
#include<stdio.h> int main(void) { int num=0,total=1; printf("정수 입력 : "); scanf_s("%d",&num); for(int i=0;i<=num+1;i++) { total*=num; num--; } printf("정수의 팩토리얼(계승) : %d \n",total); return 0; }
코드를 작성하고 나서야 느낀 점인데, for문에서 int i를 0으로 초기화 하지 않고 1로 초기화하여 조건식에서 i<=num+1을 i<=num으로 설정할 수도 있었겠다는 아쉬운 점이 남는다.
for문을 위한 정수형 i 변수가 num+1보다 작거나 같으면 for문 중괄호 안의 total*=num의 대입연산을 실행한 뒤 num에 저장된 수를 감소시켜 (n-1)의 느낌으로 만들었다.
일단은 for문으로 만들었지만 추후에 while문 혹은 do~while문 등 타 반복문으로도 바꿔 만들어 올려보도록 하겠다.
도움이 필요한 분께는 도움이 되었으면 좋겠고, 혹시라도 제가 성장하는데 도움이 되어주실 수 있으신 분께서는 따뜻한 조언 한마디씩 부탁드립니다.
'Study (etc) > C' 카테고리의 다른 글
[정렬]버블 정렬 (0) | 2019.02.03 |
---|---|
[포인터]함수의 인자로 배열 전달하기 (1) (0) | 2019.02.03 |
[함수]세 변수에 저장된 값 바꾸기 (0) | 2019.02.03 |
[배열]배열의 최솟값, 최댓값, 합 (0) | 2019.01.28 |
[반복문]continue, break의 활용 (0) | 2019.01.07 |