6个回答
展开全部
所谓 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循环可以有多层嵌套。
参考资料:
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");
}
#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");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
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);
}
给你参考下!自己思考才有进步,才有意义。
祝你生活愉快
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);
}
给你参考下!自己思考才有进步,才有意义。
祝你生活愉快
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于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;
}
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;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
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);
}
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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询