본문 바로가기

C38

[C언어]재귀 - 각 자리수의 합 이번문제는 각자리수의 합을 더한것을 구하는 문제이다.예를들어 12345 가 있다면, 1+2+3+4+5 의 값을 구하는 문제이다. 12345678910111213141516171819 #include int dol(int n, int d); int main(void){ int c; int d =10; scanf("%d", &c); printf("각자리의 합 = %d\n", dol(c, d));}int dol(int n, int d){ if(n==0) return 0; else return n%d + dol((n-n%d)/10, d);}Colored by Color Scriptercs 이또한 재귀로 구현할수 있는데,10으로 나눈 나머지로 1의자리를, 나머지를 빼고 10으로 나누어 또 다음 자리를,,이런식으로.. 2016. 3. 28.
[c언어] 재귀 - 팩토리얼 팩토리얼이란 숫자! 라는 기호로 나타낼수 있는데, 이 뜻은 n! 일 경우 1부터 n 까지의 수를 모두 곱한값이란 뜻이다.고로 만약 5! 인경우 값은 1*2*3*4*5 = 120 이다.이를 재귀함수로 구현하면, 함수안에서 리턴할때 n-1 값을 다시 호출하면 되는데,이를 구현하면 다음과 같다.12345678910111213141516171819#include int fact(int n); int main(void){ int c; scanf("%d", &c); printf("%d", fact(c));}int fact(int n){ if(n==1) return n; else return n*fact(n-1);} cs 코드를 설명하자면 면저 함수 fact 의 프로토타입을 선언해주었고,C값을 입력받아 팩토리얼의 인.. 2016. 3. 28.
[C언어] 함수 - 계산기 이 문제는 사용자가 피연산자 1과 연산자, 피연산자 2 를 입력했을때,연산자의 값에 따라 결과를 출력하는 문제이다.이를 함수로 구현하면, 피연산자 1과 연산자, 피연산자 2를 함수에 전달인자로 넘겨주거나, if 문 또는 switch 으로 연산자를 구분하여 연산자에따라 다른 함수를 호출할 수도 있다. 두번째 방식으로 if문으로 연산자를 구분하여 각기 다른 함수를 호출하면 다음과 같이 나올 수 있다.12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include int plus(int a, int c);int minus(int a, int c);int multiply(int a, int c);dou.. 2016. 3. 28.
2의n승 123456789101112131415161718192021222324252627282930313233343536373839404142434445#include int main(void){ int sum[701] = { 0, }; int temp[702] = { 0, }; int i; int j; int k; int key; sum[700] = 2; scanf("%d", &key); for (i = 0; i = 1; k--) { if ((sum[k] * 2) = 10) { sum[k] = (sum[k] * 2) % 10; temp[k - 1] += 1; } } for (j = 700; j >= 1; j--) { if (temp[j] == 1) { sum[j] += 1; temp[j] = 0; if (su.. 2016. 3. 28.