본문 바로가기

대학교 1-2/컴프

(52)
Challenge 4_2 두 정수의 최대공약수를 구하는 함수를 반복문을 이용하여 작성하시오. 1) 2) 유 클 리 드 호 제 법 을 이 용 한 다! 3) a를 b로 나누었때 몫이 q이고 나머지가 r이면, a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 4) R이 0인 경우 최대공약수는 b이다. 5) 6) 즉, a=27, b=15라 할 때, 7) 27 % 15 = 12 8) 15 % 12 = 3 9) 12 % 3 = 0 // 그러므로 3이 최대 공약수이다. 10) #include int gcd(int x, int y); int main(void) { int a, b, big, small; printf("Enter two numbers: "); scanf("%d %d", &a, &b); if (a < b) { big = b; ..
HW4_5_2 HW4_5_1에서의 get_cycle_number(int n) 함수를 순환을 이용하여 작성하고 main함수로 테스트하라. - get_cycle_number 함수 안에서 지역변수를 사용하지 말라. 예시) HW4_5 5
HW4_5_1 어떤 정수 n이 짝수면 2로 나누고 홀수면 3을 곱한 다음 1을 더한다. 이렇게 해서 새로 만들어진 숫자를 n으로 놓고 n=1이 될 때까지 같은 작업을 반복한다. 예를 들어 n=22이면 다음과 같은 수열 이 만들어진다. 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 이 때 1이 나올 때까지 만들어진 수의 개수를 (n과 1포함) 사이클 길이라 한다. 예를 들어 n=22인 경우에는 사이클 길이가 16이다 (15아님). 특정한 수를 파라미터로 받아 위와 같은 수열을 출력하고 사이클 길이를 리턴해주는 함수를 반복문을 이용하여 작성하시오. 함수의 원형은 int get_cycle_number(int n); 이다. main함수를 만들어 위의 함수를 테스트하라. 1 2 3 4 5 6 7 ..
HW4_3_1 x의 y승을 구하는 함수를 재귀적으로 구현해보자. 주어진 main은 그대로 사용한다. #include int xPoswer(int x, int y); int main(void) { int x, y; printf("Enter two numbers: "); scanf("%d %d", &x, &y); printf("%d의 %d승은 %d이다\n", x, y, xPower(x, y)); } int xPower(int x, int y) { if (…….) // 이곳에 적절한 return문을 넣는다. else // 이곳에 적절한 return문을 넣는다. } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #define _CRT_SECURE_NO_WARNINGS #include int xPo..
HW4_3_0 2의 n승을 구하는 함수를 재귀적으로 구현해 보자. 주어진 main은 그대로 사용한다. #include int twoPower(int x); int main(void) { int n; printf("Enter a number: "); scanf("%d", &n); printf("2의 %d승은 %d이다\n", n, twoPower(n)); } int twoPower(int x) { if (x == 0) // 이곳에 적절한 return문을 넣는다. else // 이곳에 적절한 return문을 넣는다. } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #define _CRT_SECURE_NO_WARNINGS #include int twoPower(int x); int main(vo..
HW4_4 수학에서 조합은 n 개에서 r 개를 뽑는 가지 수이다. 조합은 아래와 같이 재귀적으로 정의한다. 조합의 가지 수를 구하는 함수를 comb 라고 하자. 아래의 정의를 보고 comb 함수를 recursion 을 이용하여 완성하시오. nCr = 1 (if r = 0 or r = n) = n-1Cr-1 + n-1Cr 1 2 3 4 5 6 7 8 9 10 11 #include int comb(int n, int r) { … } int main(void) { int n, r; printf(“Enter n and r:”); scanf(“%d %d”, &n, &r); pirntf(“%d”, comb(n, r)); return 0; } cs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #d..
HW4_2 재귀 함수를 사용하지 않고 다시 프로그램하라. 즉 main함수는 그대로 두고 함수 fibo만 변경하라. 체크 포인트 - 입력을 40으로 하고 실행시켜보라. lab4_3과 hw4_1의 속도를 비교해보라. 어느것이 빠른가? - LAB4_3과 HW4_2중 어느것이 프로그램하기 더 쉬운가? #include int fibo(int n); int main(void) { int n, idx; printf("몇개의 피보나치 수열값을 출력할까요?(3보다 큰 정수):"); scanf("%d", &n); for (idx = 0; idx < n; idx++) { printf("%d ", fibo(idx)); if ((idx + 1) % 5 == 0) printf("\n"); } printf("\n"); } int fibo(i..
HW4_1 아래와 같이 입금만을 처리하는 프로그램을 완성하라.main함수외에 아래와 같은 prototype을 갖는 함수를 사용하라. void save(int money); static 변수를 사용하라. 1학기에 배운 감시값 제어반복문의 구조를 이용하라. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include void save(int money); int main(void) { int money; printf("저금할 금액(-1 for exit):"); scanf("%d", &money); while (money != -1) { save(money); printf("저금할 금액(-1 for exit):"); scanf("%d",..