C语言1到n阶乘求和
⑴ c语言求1~n阶乘的和
你那个do
while是要做什么呢?输入n为负数则循环输入???还是????
#include
<stdio.h>
long
Fact(int
n);///////////////////////////////////////////////////////函数定义在调用之前,要预先声明
void
main
()
{
int
n,d;
long
b,c;
do
{
printf("请输入一个正整数:");
scanf("%d",&n);
c=0;/////////////////////////////////////////////////////c=0放这边
for
(d=1;d<=n;d++)
{
b=Fact(d);////////////////////////////////////////Fact(n);改成Fact(d);
c=c+b;
}
printf("和为%ld\n",c);
}while
(n<=0);
}
long
Fact(int
n)
{
int
i;
long
result=1;
for
(i=1;i<=n;i++)
result
*=i;
return
result;
}
⑵ c语言怎么求1到n的累加和
1、首先定义一个函数,这个函数里的内容求n的阶乘,返回值是n的阶乘,如下图所示。
⑶ C语言求1至n的阶乘和问题
下面是我给你改好的代码
#include<stdio.h>
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的阶乘之和
#include<stdio.h>
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的阶乘之和s
最基础的思路,是逐个求阶乘,并累加。不过由于阶乘是从1乘到n,所以每个数都单独求一次阶乘,会有很多重复运算,影响效率。
所以更快捷的方式是,在上一个数的阶乘基础上,直接乘上本身,得到当前数的阶乘。
以此为主导,代码如下:
#include <stdio.h>
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 <stdio.h>
int fun(int n)
{
if(n==1)
return 1;
else
return n*fun(n-1);
}
int main()
{
int n,sum=0;;
printf("请输入n:\n");
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
sum+=fun(i);
}
printf("sum=%d\n",sum);
return 0;
}
⑺ c语言1加到n的阶乘之和
首先fac函数没有定义返回类型;
还有就是计算阶乘和计算的只是n的阶乘;
#include<stdio.h>
intfac(intn)//返回类型为int型
{
intsum=0;
intsum1=1;
for(intj=1;j<=n;j++)//从1开始计算阶乘,计算到n
{
for(inti=1;i<=j;i++)
{
sum1*=i;
}
sum+=sum1;
}
returnsum;
}
intmain(void)
{
intn1;
intresult;
printf("随意输入整数n,求1!+2!+...+n!的和: ");
scanf("%d",&n1);
result=fac(n1);
printf("%d",result);
return0;
}
⑻ c语言求1到n的阶乘之和s
错误比较多。
语法错误:return后少
;、
不解释、
1、主函数中传入s、可s并没有值、只是单单被定义了;
2、被调用函数因为1中的原因、导致s没有确切值;,
3、被调用函数中用的n无值、我想你可能是想用主函数中的n、可你的定义为局部定义、只能把while(n>1)中的n理解成被调用函数中的、因此无值;
4、被调用函数循环语句有问题、s的意思是把每个数的阶乘相加、举例:若输入为3、则y=1*3;s=s+3;明显不是你想要的结果、
以上是我的个人看法、若还是需要源代码可追问、建议还是自己理解、然后编程、可以帮你检查错误、有利于个人进步
⑼ 用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<stdio.h>
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);
}