c语言。求1!+2!+3!+……+10!。要求编写求N的阶乘的函数

请大家帮帮我

所谓 n 的阶乘,就是从 1 开始乘以比前一个数大 1 的数,一直乘到 n,用公式表示就是:1×2×3×4×…×(n-2)×(n-1)×n=n!

#include <stdio.h>

int main()

{

int i,j,n;

double sum=1,k=0;

scanf("%d",&n);

for(j=1;j<=n;j++){

sum=1;

for(i=1;i<=j;i++)

sum=sum*i;

if(j!=n)

printf("%d!+",j);

else

printf("%d!",j);

k+=sum;}

printf("=%lf",k);

printf("\n");

return 0;

}

扩展资料:

注意:

(1)for循环中语句可以为语句体,但要用"{"和"}"将参加循环的语句括起来。

(2)for循环中的"初始化"、"条件表达式"和"增量"都是选择项,即可以缺省,但";"不能缺省。省略了初始化,表示不对循环控制变量赋初值。

省略了条件表达式,则不做其它处理时便成为死循环。省略了增量,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。

(3)for循环可以有多层嵌套。

参考资料:

百度百科-for

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-18
如果只是要求求数的阶乘,我 给你提供一个计算10000以内阶乘的函数哈,呵呵,但是若是还要相加,就得再编写一个Bigger int 的加法运算哈,如果需要我可以把N位数相加的函数代码也给你,希望对你有帮助
#include<stdlib.h>
#include<iostream>
#include<iomanip>
using namespace std;
const int N=1000;

int compute(unsigned int *s,int n)//s用来存储一次的计算结果,n为本次计算的乘数,函数返回结果中有效数据的节数
{
unsigned long p; //暂时存放一节的结果
unsigned long more=0;//一次乘法的进位
int i; //循环变量

static int m=1;//存放结果中的节数,三位一节
static int q=0;//存放结果中最后为零的节数

//计算本次的结果
for(i=q;i<m;i++)
{
p=(long)s[i]*(long)n+more;
more=p/N;
s[i]=p-more*N;
}

//计算结果中最后为零的节数
while(s[q]==0) q++;

//处理最高位
for(more=p/N;more;)
{
p=more;
more=p/N;
s[i++]=p-more*N;
m++; //有效节数增一
}

return m; //返回有效节数
}

int main()
{
unsigned int *s; //存放结果
int i; //循环变量
int m; //存放节数
int n; //求n的阶乘

cout<<"请输入一个正整数<0----10000>:";
cin>>n;

if(n<0)
{
cout<<"输入数据错误!"<<endl;
return 0;
}
else if(n==0)
{
cout<<"0!==1"<<endl;
return 0;
}

//初始化s
s=(unsigned int *)malloc(n*sizeof(s)*10);
for(i=1;i<n;i++) s[i]=0;
s[0]=1;

//计算结果
for(i=2;i<=n;i++) m=compute(s,i);

while(s[m]==0) m--;//过滤掉前面的零

//输出结果
cout<<n<<"!=="<<s[m--];//最高一节

int num=1;
for(i=m;i>=0;i--)
{
num++;
cout<<','<<setw(3)<<setfill('0')<<s[i];
if((num%10)==0) cout<<endl;
}
cout<<endl;

//释放空间
free(s);
system("pause");
}
第2个回答  2013-10-18
#include "stdio.h"
double hi(int n)
{
int i;
double s=1.0;
for (i=1;i<=n;i++)
s=s*i;
return s;
}
void main()
{
double sum=0.0;
int n,i;
printf ("please input n:\n");
scanf ("%d",&n);
for (i=1;i<=n;i++)
sum+=hi(i);
printf ("1!+2!+3!+……+n!=%0.f",sum);
}

给你参考下!自己思考才有进步,才有意义。
祝你生活愉快
第3个回答  推荐于2018-02-26
#include"stdio.h"

int fun(int n)
{
int i,sum=1;
for (i=1;i<=n;i++) sum*=i;
return sum;
}

int main()
{
int i,n,sum=0;
scanf("%d",&n);
for (i=1;i<=n;i++) sum+=fun(i);
printf("%d\n",sum);
return 0;
}本回答被网友采纳
第4个回答  2013-10-18
#include "stdio.h"
int fun(int x)
{
int temp=1;
int sum=0;
for(int i=1;i<=x;i++)
{
temp*=i;
sum+=temp;
}
return sum;
}
int main()
{
int n=10;
int result=fun(n);
printf("%d",result);
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网