如何用C语言求1!+3!+5!+……+n!的值

我是初学者,请老师们指教!!!

#include<stdio.h>
int main()
{
    int n,i,sum=0,fact=1;
    scanf("%d",&n);
    for(i=1;i<=n;i+=2)
    {
        sum+=fact;
        fact*=i*(i+1);
    }
    printf("%d",sum);
}

sum存结果,fact存临时的阶乘值

i是循环变量,每次加二刚好对应一项

温馨提示:内容为网友见解,仅供参考
第1个回答  2009-08-01
如果N变的很大的时候,普通的方法会发生溢出错误,一楼说的没错,要考虑精度还有运算存储问题。不过可以变通求解,给个例子,希望对你有用。

#include<math.h>
#include<stdio.h>

int main()
{
long i;
double ln=0;
int n;
printf("input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
ln+=log10(i);
i=(long)ln;ln=pow(10,ln-i);
printf("%lf*10^%ld\n",ln,i);
return 0;
}
第2个回答  推荐于2018-03-15
#include <stdio.h>
int main()
{
int a,b,c=1,total=0;
int n = 5;
for(a=1;a<n;a+=2)
{
for(b=1;b<a;b++)
c *= b;
total += c;
c = 1;
}
return 0;
}
不明白加我百度HI吧。本回答被提问者和网友采纳
第3个回答  2019-07-27
#include
<stdio.h>
int
main()
{
int
a,b,c=1,total=0;
int
n
=
5;
for(a=1;a<n;a+=2)
{
for(b=1;b<a;b++)
c
*=
b;
total
+=
c;
c
=
1;
}
return
0;
}
明白加我百度HI吧
第4个回答  2009-08-01
#include<stdio.h>
int jiecheng(int n)
{
if(n==0||n==1)
return 1;
if(n>2)
n=n*jiecheng(n-1);
return n;
}
int main()
{
int i,n,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
sum=sum+jiecheng(2*i-1);
printf("%d",sum);

}

如何用C语言求1!+3!+5!+……+n!的值
include<stdio.h>int main(){ int n,i,sum=0,fact=1; scanf("%d",&n); for(i=1;i<=n;i+=2) { sum+=fact; fact*=i*(i+1); } printf("%d",sum);}sum存结果,fact存临时的阶乘值 i是循环变量,每次加二刚好对应一项 ...

C语言编程 求1!+3!+5!+……+N!的值,且N为奇数
int main(){ int n,i; long a,sum = 1; printf("请输入一个奇数:\\n"); scanf("%ld",&n); for(i = 3,a = 1;i <= n;i += 2) { a *= i * (i - 1); sum += a; } printf("%ld\\n",sum); return 0;}本程序已经在VC上运行通过,在N不是很大的情况下可以,太大了就属于大数...

请教C语言的算法 1!+3!+5!+...+n!
{ long int sum=0;if(n < 1) sum = 0;else sum = sum * calculate_n(n-1);return sum;} void main(){ int i, n;long int sum = 0;scanf("%d",&n);for(i=1; i<= n; i += 2)sum += calculate_n(i);printf("1!+3!+5!+…+(2k-1)!= %ld",sum);} 上面...

c语言中想算1!+3!+5!+。。。n!
对于每个i,sum要及时重新赋值1,否则会一直连乘下去。include<stdio.h>int main(){int s=0,n,i,k,sum;\/\/sum此时不需要赋值printf("请输入一个奇数:");scanf("%d",&n);for(i=1;i<=n;i=i+2){sum=1;\/\/对于每个i,要对sum赋初始值1,这样才能对每个i,求其阶乘for(k=1;k<=i;...

用C语言 求1!+3!+5!+7!+...+n!
你的算法即使正确 效率也不高啊。事实上只要求最后一个n!就可以,只要一次循环。你的问题在temp的值在内面一重循环完成后应当重新赋为1,不然就会逐渐变很大。 代码如下:include<stdio.h> int main(){ int temp=1; \/\/存之前已经计算的i!int i=0,n=0, sn = 1;scanf("%d",&n);for(i...

C语言,求1+3+5+...+n的编程?
include <stdio.h> int main(){ int sum,n,i;scanf("%d",&n);for(sum=0,i=1;i<=n;i+=2)sum+=i;printf("%d\\n",sum);return 0;}

用C语言设计一个程序,求1!+2!+3!+4!+5!+…+n!
int 0<n<13)...\\nn="); if(scanf("%d",&n),n<0 || n>12){ printf("Input error, the program exits...\\n"); exit(0); } for(sum=0,t=i=1;i<=n;sum+=t*=i++); printf("The result is %d\\n",sum); return 0;} ...

c语言,求1!+2!+3!+4!+5!+...+n!
你用sum变量保存累加和,这是正确的,但每项的阶乘值没有变量来保存是个问题,要知道阶乘也是一个累乘的结果,而i*i并不是n的阶乘而是n的平方。当前项等于前边相乘以当前的i值,这个累乘变量的起始值为1。建议:int i,n;double sum,m;...sum=0; m=1; \/\/变量m计算当前项即阶乘值 for ( ...

...键盘输入正整数n(0<n<10)的值,求s=1!+3!+5!+…+n!的值并输出...
include <stdio.h>int main(){int a,b,c=1,total=0;int n;scanf("%d",&n);for(a=1;a<n;a+=2) { for(b=1;b

C语言:输入n,求1!+2!+3!+4!+5!+...+n!
\/\/问题main里面sum初始值错误,应改为sum = 0;include<stdio.h> int fun(int n){ int i,sum=1;for(i=1;i<=n;i++)sum*=i;return sum;} main(){ int i,sum=1;\/\/这里sum初始化应为0,这和上面函数乘是不一样,你可能没注意 int n;scanf("%d",&n);for(i=1;i<=n;i++){...

相似回答