c语言计算1 n阶乘之和(c语言求1到n的阶乘之和s)
本文目录
- c语言求1到n的阶乘之和s
- C语言求1至n的阶乘和问题
- c语言求1到n阶乘的和用递归
- 求1加到n的阶乘c程序
- 用C语言求1到N的阶层 的累加和
- 用c语言编写程序计算1~n的阶乘之和.
- c语言求1/n的阶乘和
- C语言求一到n的阶乘之和,n大于1小于等于16
c语言求1到n的阶乘之和s
最基础的思路,是逐个求阶乘,并累加。不过由于阶乘是从1乘到n,所以每个数都单独求一次阶乘,会有很多重复运算,影响效率。
所以更快捷的方式是,在上一个数的阶乘基础上,直接乘上本身,得到当前数的阶乘。
以此为主导,代码如下:
#include 《*****》
int main()
{
int n, i, n1 = 1,s=0;
scanf("%d",&n);//输入n值。
for(i=1; i 《= n; i ++)
{
n1*=i;//计算i的阶乘。
s+=n1;//累加。
}
printf("%d\n", s);//输出结果。
}
C语言求1至n的阶乘和问题
下面是我给你改好的代码
#include《*****》
int
main()
{
int
i,n;
double
p=1,sum=0;
scanf("%d",&n);
for(i=1;i《=n;i++)
{
p*=i;
sum+=p;
}
printf("%lf\n",sum);
}
有几点你要注意一下,int是什么数据类型你应该知道,取值范围也知道吧,你输入33,你自己想象33的阶乘是多大的值,超出int范围肯定溢出啊,所以这里建议改为double型
还有你那个sum+=p,调到for循环里面,在外面的话只会执行一次,就是把p的最终值加上sum的初始值0,然后赋值给sum,这不就相当于直接把p的值赋给sum吗,所以我给你改成那样了,你自己看看吧
c语言求1到n阶乘的和用递归
1、打开*****,新建一个vc项目,添加头文件,添加一个空的main函数,这里先定义一个用来求阶乘的函数,函数的参数为i,阶乘就是不断的和前面的一个数相乘,这里就是不断和fact函数相乘,之后编写主函数的内容:
2、在main函数定义int类型变量sum,然后调用fact()将返回值赋予sum,最后使用printf打印sum的值:
3、最后编写程序好后,来运行程序观察结果,这里可以看到打印出了6的阶乘。以上就是C语言用递归的方式求阶乘的过程:
求1加到n的阶乘c程序
#include
long
fac(int
n)//求n的阶乘;
{
if(n==1)return
1l;//当n为1,返回值1;
else
return
n*fac(n-1);//计算n的阶乘;
}
long
sum(int
n)//求阶乘相加之和;
{
int
s,k;
for(s=0,k=0;k《=n,n》0;k++){
s=s+fac(n);
n=n-1;
}
return
s;
}
void
main()//主函数
{
int
m;
scanf("%d",&m);
printf("%d\n",sum(m));
}
这悬赏的分数确实对不起这么多的要求。不过,还是帮你一把。
使用了两个函数调用,你可以围绕函数调用那章来写报告。
用C语言求1到N的阶层 的累加和
思路:先定义一个函数用来计算一个数的阶乘,在从1到N循环依次就其累加和,最后输出累加和即可。
参考代码:例如求1到3的阶乘累加和。
#include "*****"
int fun(int n){
if(n==1) return 1;
else return n*fun(n-1);
}
#include "*****"
int main() {
int n,sum=0,i;
scanf("%d",&n);
for(i=1;i《=n;i++)
sum+=fun(i);
printf("%d\n",sum);
return 0;
}
/*
运行结果:
3
9
*/
用c语言编写程序计算1~n的阶乘之和.
错误可能有三个,第一你的main前面没有声明,缺少个int,第二个可能的错误就是没有按照题目的要求进行多股输入,你的代码只是输入一次n就结束程序,第三个是最主要的错误,你的for(j=1;j《=i;j++)
里面每次循环一次就把p赋值为1,如果输入3的话,答案是不是10?1*1+1*1*2+1*2*3=10。如果要这样算的话程序如下:
#include《*****》
int main()
{
int i,j,n;
long p;
long Sn=0;
scanf("%d",&n);
for(i=1;i《=n;i++)
{p=1;
for(j=1;j《=i;j++)
{ p=p*j; }
Sn=Sn+p;
}
printf("%ld\n",Sn);
}
c语言求1/n的阶乘和
#include 《*****》
int main()
{
double r=1,f=1;
int i,n;
scanf("%d",&n);
for(i = 1; i 《= n; i ++)
{
f*=i;
r+=1/f;
}
printf("%lf\n",r);
return 0;
}
C语言求一到n的阶乘之和,n大于1小于等于16
#include 《*****》
int main() {
__int64 fact = 1,i,sum = 0;
int n;
scanf("%d",&n);
for(i = 1; i 《=n; ++i) {
fact *= i;
sum += fact;
}
printf("sum = %I64d\n",sum);
return 0;
}
注意类型 必须是8字节的整形 用__int64或者用long long (编译器相关)
更多文章:
专题页是什么(什么是专题页 什么关键词适合做专题页 专题页有什么优势 特点 什么情况下使用专题页)
2026年5月4日 17:20
绝对值函数excel公式怎么打(EXCEL中绝对值符号怎么打)
2026年5月4日 17:00
strcpy a b 什么意思(c语言中的char *a,*b; strcpy(a,b);与a=b;有什么区别)
2026年5月4日 16:20
thinkphp50在线手册(ThinkPHP怎么导入自定义类库)
2026年5月4日 15:40





