C \ C++/C 스터디 예제 풀이
[누렁이] 1과 예제 풀이
안정민
2023. 3. 18. 21:04
1. Horner 법칙을 이용하여 다항식을 계산하는 C프로그램을 작성하여라
#include <stdio.h>
#define MAX_SIZE 101
double horner(int* coeff, int n, int x);
int main() {
int coeff[MAX_SIZE] = { 1, 2, 3, 4, 5 }; //계수
int n = 5; //차수
double result, x;
printf("x의 값은? >>> ");
scanf_s(" %lf", &x);
result = horner(coeff, n, x);
printf("다항식 ");
for (int i = n - 1; i >= 0; i--) {
if (i == 0) {
printf("%d", coeff[i]);
break;
}
if (coeff[i] == 0)
continue;
printf("%d*x^%d + ", coeff[i], i);
}
printf("에서 x = %.1f일때 다항식의 값은 %.1f입니다.", x, result);
return 0;
}
double horner(int* coeff, int n, int x) {
//n번의 덧셈과 n번의 곱셈으로 해결
double result = coeff[n - 2] + coeff[n - 1] * x;
for (int i = n - 3; i >= 0; i--) {
result = result * x + coeff[i];
}
return result;
}
2. 정수 3개를 오름차순으로 출력하는 C프로그램을 작성하여라
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
int a = 0, b = 0, c = 0;
printf("세 개의 정수:");
scanf("%d%d%d", &a, &b, &c);
{
if (a > c)
{
if (b > c)
{
printf("%d %d %d\n", a, b, c);
}
else
{
printf("%d %d %d\n", a, c, b);
}
}
else
{
printf("%d %d %d\n", c, a, b);
}
else
{
if (b > c)
{
if (a > c)
{
printf("%d %d %d\n", b, a, c);
}
else
{
printf("%d %d %d\n", b, c, a);
}
}
else
{
printf("%d %d %d\n", c, b, a);
}
}
return 0;
}
/ a, b, c 리스트로 받아서 sorting
3. 계승함수 n! 에 대해 순환함수와 반복함수로 프로그램을 만들어라
-반복함수
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int factorial(int n);
int main(void){
int n, r;
printf("정수 입력 >>> ");
scanf("%d", &n);
r = factorial(n);
printf("result >>> %d", r);
}
int factorial(int n) {
int k, v = 1;
for (k = n; k > 0; k--)
v = v * k;
return(v);
}
-순환함수
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
int factorial(int n);
int main(void) {
int n, r;
printf("정수 입력 >>> ");
scanf("%d", &n);
r = factorial(n);
printf("result >>> %d", r);
}
int factorial(int n) {
if (n == 1) return (1);
else return(n * factorial(n - 1));
}
4. 피보나치 수열에 대한 C함수를 작성하여라
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
int fibonacci(int n);
int main(void) {
int n, r, i;
printf("정수 입력 >>> ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
r = fibonacci(i);
printf("%d", r);
}
return 0;
}
int fibonacci(int n) {
if (n == 0) return 0;
else if (n == 1) return 1;
else return (fibonacci(n - 1) + fibonacci(n - 2));
}
5. 이항계수를 계산하는 반복함수를 작성
#include <stdio.h>
int factorial(int n) {
int i, result = 1;
for (i = n; n > 0; n--)
result *= n;
return result;
}
int nCk(int n, int k) {
if (k == 0 || k == n) return 1;
else if ((0 < k) && (k < n)) {
int i, numerator = 1;
if (k > n / 2) k = n - k;
for (i = 1; i <= k; i++, n--)
numerator *= n;
return numerator / factorial(k);
}
else return 0;
}
int main(void) {
int n, k, result;
n = 7; k = 5;
result = nCk(n, k);
printf("%dC%d = %d\n", n, k, result);
return 0;
}
6. Ackermann함수를 계산하는 C함수를 계산하여라
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
int A(int m, int n);
int main(void) {
int m, n;
printf("정수 1을 입력 >>");
scanf_s("%d", &m);
printf("정수 2을 입력 >>");
scanf_s("%d", &n);
int num = A(m, n);
printf("계산의 결과 값은 %d이다.", num);
return 0;
}
int A(int m, int n) {
while (m != 0) {
if (n == 0) {
m = m - 1;
n = 1;
}
else {
m = m - 1;
n = A(m, n - 1);
}
}
return n + 1;
}
7. 하노이의 탑 순환함수 프로그램
++업로드