关于#c++#的问题,请各位专家解答!

img


他这个是怎么搞出来的 好难好难 学校的实训 为什么要把这么多问题整合到一起,还要设计出指导栏

#include <stdio.h>

int menu(); // 菜单函数
int factorial(); // 求阶乘函数
int sum(); // 求累加和函数
int power(); // 求N次方函数
int gcd(); // 求最大公约数函数
int lcm(); // 求最小公倍数函数
int isPrime(); // 判断素数函数
int fibonacci(); // 斐波拉契数列函数

int main() {
    int choice;
    do {
        choice = menu();
        switch (choice) {
            case 1: factorial(); break;
            case 2: sum(); break;
            case 3: power(); break;
            case 4: gcd(); break;
            case 5: lcm(); break;
            case 6: isPrime(); break;
            case 7: fibonacci(); break;
            case 0: return 0;
            default: printf("输入错误,请重新输入!\n"); break;
        }
    } while (1);
}

int menu() {
    int choice;
    printf("==========菜单==========\n");
    printf("1. 求任意数的阶乘");
    printf("2. 求任意数的累加和");
    printf("3. 求任意正整数的N次方");
    printf("4. 求任意两个数的最大公约数");
    printf("5. 求任意两个数的最小公倍数");
    printf("6. 判断任意数是否为素数");
    printf("7. 输出斐波拉契数列前N项");
    printf("0. 退出");
    printf("=========================\n");
    printf("请输入数字选择功能:");
    scanf("%d", &choice);
    return choice;
}

int factorial() {
    int n, i;
    long long result = 1;
    printf("请输入一个正整数:");
    scanf("%d", &n);
    if (n < 0) {
        printf("输入错误,负数没有阶乘!\n");
        return 0;
    } else if (n == 0) {
        printf("0的阶乘为1");
        return 0;
    } else {
        for (i = 1; i <= n; i++) {
            result *= i;
        }
        printf("%d的阶乘为%lld", n, result);
        return 0;
    }
}

int sum() {
    int n, i;
    long long result = 0;
    printf("请输入一个正整数:");
    scanf("%d", &n);
    if (n < 0) {
        printf("输入错误,不能为负数!\n");
        return 0;
    } else {
        for (i = 1; i <= n; i++) {
            result += i;
        }
        printf("1到%d的累加和为%lld", n, result);
        return 0;
    }
}

int power() {
    int base, exponent, i;
    long long result = 1;
    printf("请输入一个正整数作为底数:");
    scanf("%d", &base);
    printf("请输入一个正整数作为指数:");
    scanf("%d", &exponent);
    if (base < 0 || exponent < 0) {
        printf("输入错误,不能为负数!\n");
        return 0;
    } else {
        for (i = 1; i <= exponent; i++) {
            result *= base;
        }
        printf("%d的%d次方为%lld", base, exponent, result);
        return 0;
    }
}

int gcd() {
    int a, b, c;
    printf("请输入两个正整数,用空格隔开:");
    scanf("%d %d", &a, &b);
    if (a < 0 || b < 0) {
        printf("输入错误,不能为负数!\n");
        return 0;
    } else if (a == 0 || b == 0) {
        printf("0没有最大公约数!\n");
        return 0;
    } else {
        while (b != 0) {
            c = a % b;
            a = b;
            b = c;
        }
        printf("%d和%d的最大公约数为%d", a, b, a);
        return 0;
    }
}

int lcm() {
    int a, b, c, d, result;
    printf("请输入两个正整数,用空格隔开:");
    scanf("%d %d", &a, &b);
    if (a < 0 || b < 0) {
        printf("输入错误,不能为负数!\n");
        return 0;
    } else if (a == 0 || b == 0) {
        printf("0没有最小公倍数!\n");
        return 0;
    } else {
        c = a;
        d = b;
        while (c != d) {
            if (c > d) {
                d += b;
            } else {
                c += a;
            }
        }
        result = c;
        printf("%d和%d的最小公倍数为%d", a, b, result);
        return 0;
    }
}

int isPrime() {
    int n, i;
    printf("请输入一个正整数:");
    scanf("%d", &n);
    if (n < 2) {
        printf("%d不是素数!\n", n);
        return 0;
    } else {
        for (i = 2; i <= n / 2; i++) {
            if (n % i == 0) {
                printf("%d不是素数!\n", n);
                return 0;
            }
        }
        printf("%d是素数!\n", n);
        return 0;
    }
}

int fibonacci() {
    int n, i;
    long long a = 0, b = 1, c;
    printf("请输入一个正整数:");
    scanf("%d", &n);
    if (n < 1) {
        printf("输入错误,至少输出一项!\n");
        return 0;
    } else {
        printf("斐波拉契数列前%d项为:", n);
        for (i = 1; i <= n; i++) {
            printf("%lld ", a);
            c = a + b;
            a = b;
            b = c;
        }
        printf("\n");
        return 0;
    }
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

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