用户输入一个整数n,分别输出1!,2!,…,n!,其中每个数据占20列,并且每行只输出五个元素

用户输入一个整数n,分别输出1!,2!,…,n!,其中每个数据占20列,并且每行只输出五个元素

n没有范围么,先用int,不够的话换long吧

#include <stdio.h>

int factorial(int n) {
    if (n <= 1) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}

int main() {
    int n;
  
    printf("请输入 n:");
    scanf("%d", &n);

    printf("各阶乘如下所示:\n");
    for (int i = 1; i <= n; i++) {
        int f = factorial(i); 
        if ((i - 1) % 5 == 0) {
            printf("\n");
        }
        printf("%d!=%-*d", i,20, f);
    }
    printf("\n");

    return 0;
}

参考如下:

#include <stdio.h>
#include <time.h>

int main()
{
    int n;
    scanf("%d", &n);

    long long fac = 1L;
    for (int i = 1; i <= n; i++)
    {
        fac = 1L;
        for (int j = 1; j < i; j++)
        {
            fac *= j;
        }
        printf("%20lld", fac);
        if (i % 5 == 0)
            printf("\n");
    }
    return 0;
}
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7801691
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:[解题报告]【第16题】给定 n,打印一个直角边为 n 的等边直角三角形
  • 除此之外, 这篇博客: c语言中函数的介绍(血书20000字!!!!)中的 题目(1): 从前有一只青蛙想跳台阶去等峰,若该青蛙一次可以跳上1级台阶、也可以跳上2级……(n-1)级、n级。那么该青蛙跳上第n级的台阶时总共有多少种跳法。(前提是n个台阶会有一次n阶的跳法) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • (1)解题思路:

    若n为1级台阶:f(1) = 1 (只可能有一种跳法)
    若n为2级台阶:f(2) = f(2 - 1) + f(2 - 2)(会有两个跳台阶的方法,一次1阶或者一次2阶)
    若n为3级台阶:f(3) = f(3 - 1) + f(3 - 2) + f(3 - 3)(会有三种跳台阶的方法,一次1阶、2阶、3阶)
    ……
    ……
    若n为(n - 1)级台阶:

    f(n-1) = f((n-1)-1) + f((n-1)-2) + … + f((n-1)-(n-2)) + f((n-1)-(n-1))
    f(n-1) = f(0) + f(1)+f(2)+f(3) + … + f((n-1)-1)
    f(n-1) = f(0) + f(1) + f(2) + f(3) + … + f(n-2)

    若n为n级台阶:

    f(n) = f(n-1) + f(n-2) + f(n-3) + … + f(n-(n-1)) + f(n-n)
    f(n) = f(0) + f(1) + f(2) + f(3) + … + f(n-2) + f(n-1)

    结合f(n-1)和f(n)的情况你会发现f(n) = f(n-1) + f(n-1),所以可得: f(n) = 2*f(n-1)。

    #include<stdio.h>
    int frog_jump_step(int n)
    {
    	if (n <= 1)
    	{
    		return 1;
    	}
    	else
    		return 2 * frog_jump_step(n - 1);
    }
    int main()
    {
    	int n = 0;
    	printf("请输入青蛙应该跳的台阶个数:");
    	scanf("%d", &n);
    	int sum = frog_jump_step(n);
    	printf("一共有种%d种跳法\n", sum);
    	return 0;
    }