从键盘输入一个数,求出这个数的阶乘,即 n!。

算法思想
首先要清楚阶乘定义,所谓 n 的阶乘,就是从 1 开始乘以比前一个数大 1 的数,一直乘到 n,用公式表示就是:1×2×3×4×…×(n-2)×(n-1)×n=n!

具体的操作:利用循环解决问题,设循环变量为 i,初值为 1,i 从 1 变化到 n;依次让 i 与 sum 相乘,并将乘积赋给 sum。
① 定义变量 sum,并赋初值 1。
② i 自增 1。
③ 直到 i 超过 n。

#include <stdio.h>

int main(void) {
    int i, n;
    double sum = 1,sum1=1;
    printf("请输入数:");
    scanf("%d", &n);
    //方法一;
    for (i = 1; i <= n; ++i) {
        sum *= i;
    }
    printf("%d!=%.2lf", n, sum);
    printf("\n");
    return 0;
}

输出结果:

请输入数:5
5!=120.00

方法二:

#include <stdio.h>

//使用递归
double f(int n) {
    if (n == 1)
        return 1;
    else
        return n * f(n - 1);
}
int main(void) {
    int i, n;
    double sum = 1;
    printf("请输入数:");
    scanf("%d", &n);
    //方法二:
    sum = f(n);//使用递归
    printf("%d!=%.2lf", n, sum);
    printf("\n");

    return 0;
}

输出结果:

请输入数:5
5!=120.00

技术要点:

① 由于阶乘一般较大,会超出整型甚至是长整型所能表示的范围,因此定义变量时就不能定义为整型,而应该考虑双精度数。

② 实训中定义了一个双精度型的变量,用来存放结果。因此在输出时应注意双精度数的输出格式。