C语言的计算的问题,还有一些功能的程序

简易数学计算工具该程序有以下几个主要功能:(1)选项菜单集成各个计算功能函数(2)求任意数的阶乘;(3)求组合数;(4)求任意两个整数的最大公约数和最小公倍数;(5)判断任意数是否是素数;(6)显示菲波拉契数列的前N项。

已回答,莫辜负
————————————————————————————————————————

#include <stdio.h>

// 求n的阶乘
int factorial(int n) {
    if (n == 0 || n == 1) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}

// 求组合数C(m, n)
int combination(int m, int n) {
    return factorial(m) / (factorial(n) * factorial(m - n));
}

// 求最大公约数
int gcd(int a, int b) {
    int temp;
    while (b != 0) {
        temp = a % b;
        a = b;
        b = temp;
    }
    return a;
}

// 求最小公倍数
int lcm(int a, int b) {
    return a * b / gcd(a, b);
}

// 判断素数
int isPrime(int n) {
    if (n <= 1) {
        return 0;
    }
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0) {
            return 0;
        }
    }
    return 1;
}

// 菲波拉契数列
void fibonacci(int n) {
    int a = 0, b = 1, c;
    printf("Fibonacci sequence for n=%d:\n", n);
    printf("%d %d ", a, b);
    for (int i = 2; i < n; i++) {
        c = a + b;
        printf("%d ", c);
        a = b;
        b = c;
    }
    printf("\n");
}

int main() {
    int choice;
    int m, n;
    printf("Math Calculator\n");
    printf("==================\n");
    printf("1. Factorial\n");
    printf("2. Combination\n");
    printf("3. GCD and LCM\n");
    printf("4. Prime Number\n");
    printf("5. Fibonacci sequence\n");
    printf("Enter your choice (1-5): ");
    scanf("%d", &choice);
    switch (choice) {
        case 1:
            printf("Enter the number n: ");
            scanf("%d", &n);
            printf("%d! = %d\n", n, factorial(n));
            break;
        case 2:
            printf("Enter the values of m and n: ");
            scanf("%d %d", &m, &n);
            printf("C(%d, %d) = %d\n", m, n, combination(m, n));
            break;
        case 3:
            printf("Enter two numbers: ");
            scanf("%d %d", &m, &n);
            printf("GCD = %d\n", gcd(m, n));
            printf("LCM = %d\n", lcm(m, n));
            break;
        case 4:
            printf("Enter a number: ");
            scanf("%d", &n);
            if (isPrime(n)) {
                printf("%d is a prime number.\n", n);
            } else {
                printf("%d is not a prime number.\n", n);
            }
            break;
        case 5:
            printf("Enter the value of n: ");
            scanf("%d", &n);
            fibonacci(n);
            break;
        default:
            printf("Invalid choice.\n");
    }
   

chatgpt:点个赞


#include <stdio.h>

// 计算阶乘的函数
int factorial(int n) {
    if (n == 0) {
        return 1;
    } else {
        return n * factorial(n-1);
    }
}

// 计算组合数的函数
int combination(int n, int m) {
    int numerator = factorial(n);
    int denominator = factorial(m) * factorial(n-m);
    return numerator / denominator;
}

// 计算最大公约数的函数
int gcd(int a, int b) {
    if (b == 0) {
        return a;
    } else {
        return gcd(b, a%b);
    }
}

// 计算最小公倍数的函数
int lcm(int a, int b) {
    return a * b / gcd(a, b);
}

// 判断素数的函数
int is_prime(int n) {
    if (n <= 1) {
        return 0;
    }
    for (int i=2; i*i<=n; i++) {
        if (n%i == 0) {
            return 0;
        }
    }
    return 1;
}

// 计算菲波拉契数列的函数
void fibonacci(int n) {
    int a = 0, b = 1;
    for (int i=0; i<n; i++) {
        printf("%d ", a);
        int c = a + b;
        a = b;
        b = c;
    }
    printf("\n");
}

int main() {
    int choice;
    while (1) {
        printf("\n");
        printf("请选择功能:\n");
        printf("1. 计算阶乘\n");
        printf("2. 计算组合数\n");
        printf("3. 计算最大公约数和最小公倍数\n");
        printf("4. 判断素数\n");
        printf("5. 显示菲波拉契数列\n");
        printf("0. 退出程序\n");
        printf("请选择:");
        scanf("%d", &choice);
        
        if (choice == 0) {
            break;
        } else if (choice == 1) {
            int n;
            printf("请输入一个整数:");
            scanf("%d", &n);
            int result = factorial(n);
            printf("%d的阶乘是%d\n", n, result);
        } else if (choice == 2) {
            int n, m;
            printf("请输入两个整数,用空格隔开:");
            scanf("%d %d", &n, &m);
            int result = combination(n, m);
            printf("C(%d,%d)=%d\n", n, m, result);
        } else if (choice == 3) {
            int a, b;
            printf("请输入两个整数,用空格隔开:");
            scanf("%d %d", &a, &b);
            int gcd_result = gcd(a, b);
            int lcm_result = lcm(a, b);
            printf("%d和%d的最大公约数是%d,最小公倍数是%d\n", a, b, gcd_result, lcm_result);
        } else if (choice == 4) {
            int n;
            printf("请输入一个整数:");
            scanf("%d", &n);
            if (is_prime            (n)) {
            printf("%d是素数\n", n);
        } else {
            printf("%d不是素数\n", n);
        }
    } else if (choice == 5) {
        int n;
        printf("请输入一个整数:");
        scanf("%d", &n);
        printf("菲波拉契数列的前%d项是:\n", n);
        fibonacci(n);
    } else {
        printf("无效选项,请重新选择\n");
    }
}
return 0;
}


此程序包含一个菜单,提示用户选择要执行的功能。当用户输入不同的选项时,程序调用相应的函数执行相应的操作。

如果要将此程序编译并运行,请使用C编译器,例如gcc,并将程序保存为一个名为“calculator.c”的文件。然后,在命令行中导航到该文件所在的目录,并运行以下命令:

gcc calculator.c -o calculator
./calculator

这将编译程序并将其保存为一个名为“calculator”的可执行文件。然后,运行“./calculator”命令即可启动程序并开始使用。
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^