有哪位大佬会C语言的题,棒棒孩子

1. 写一个函数求n!,主函数通过函数调用的方式求s=1!+2!+3!+……n!并输出结果,n值通过键盘输入。

用循环做

#include<stdio.>
int fac(int n);
int main(void)
{
    printf("input n:\n");
    int n, i,sum = 0;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        sum += fac(i);
    }
    printf("1!+2!+...+n! = %d\n",sum);
    return 0;
}
int fac(int n)
{
    if(n==1)
        return n;
    else
        return n*fac(n-1);
}

 

连续数相乘封装一个函数即可

int jc(int n)
{
    int j=1;
    for(int i=2;i<=n;i++)
        j*=i;
    return j;
}

void main()
{
    int n;
    scanf("%d",&n);
    int m = 0;
    for(int i=1;i<=n;i++)
        m += jc(i);
    printf("结果为:%d",m);
}

 

#include <stdio.h>

/*
2、n的阶乘,如:10!=10*9*8*....*2*1
*/
void main(){
	int n;
	int i;
	double sum = 1;//阶乘的结果 
	printf("请输入一个数:");
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		sum =sum*i; //阶乘 
	}
	printf("%d的阶乘是%0.2lf\n",n,sum);
	 
} 

 

第一个直觉,递归,用两个递归(阶乘用递归,求和也用递归),每个递归都可以用循环代替,这就有了四种不同解法。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632