C语言求阶乘倒数之和
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言求阶乘倒数之和相关的知识,希望对你有一定的参考价值。
为什么这样算没返回值。。。
#include<stdio.h>
double fun(int a)
int i,j,m,S=1;
for(i=2;i<=a;i++)
m=1;
for(j=i;j>=1;j--)
m*=1/j;
S+=m;
return S;
main()
int n;
scanf("%d",&n);
fun(n);
改了一下但是貌似算法有问题。。
#include<stdio.h>
double fun(int a)
int i,j;
double m,S=1.0;
for(i=2;i<=a;i++)
m=1.0;
for(j=i;j>=1;j--)
m*=1/j;
S+=m;
return S;
main()
int n,sum;
scanf("%d",&n);
fun(n);
sum=fun(n);
printf("%d\n",sum);
#if 0
double fun(int a)
int i,j;
double m,S=1.0;
for(i=2;i<=a;i++)
m=1.0;
for(j=1;j<=i;j++)//--变++不变也可
m*=j;//改了一下
S+=1.0/m;
return S;
#endif
//优化了一下
double fun(int a)
int i,j;
double m=1.0,S=1.0;
for(i=1;i<=a;i++)//从0算起,从1算起的话改回:for(i=2;i<=a;i++)
m*=i; // 求阶乘
S+=1.0/m;//倒数相加
return S;
main()
int n,sum;
scanf("%d",&n);
sum=fun(n);
printf("%d\n",sum);
你的求倒数算法的结果为零,因为使用了整数相除结果为整除的商。
另外一重循环就可以了!追问
貌似所有返回值都是1
追答1+0=1
本回答被提问者采纳 参考技术B 少了printf函数, 可以在main里面加上int a;然后在最下面更改a=fun(n);printf("%d",a); 参考技术C 你在代后面加上
printf("%f",fun(n));//显示函数fun返回值的信息,
一般的MAN函数的格式
int main(void)
return 0;
希望对你有帮助。
C语言for循环 求1--10阶乘的和
阶乘的公式为:n!=1*2*...*(n-1)*n.
#include <stdio.h>void main()
int a,b,c;
int sum=0;
for(a=1;a<=10;a++)//控制1-10个数字
for(b=1,c=1;b<=a;b++)//控制每个数的阶乘
c=b*c;
sum+=c;//把结果累加在sum中
printf("10的阶乘之和为:%ld\n",sum);
//前面的几位帅哥,有没有编译啊?我试了几个,还要改了又改; 参考技术A
现象一:手机不开机(手机电池可拆卸)
解决方法:新手机放上电池首次开机,手机要做初始化的操作,开机时间会较长,有可能被误认为不开机。对于电池过度放电造成的不开机,取下电池,手机连接充电器看能否开机,如可以开机,将电池装上充电30分钟以上,可正常开机。
现象二:手机放在口袋中,触摸屏与身体接触,此时来电无法划动触屏接听电话。
解决方法:保持手及触摸屏的清洁和干燥,击两下开机键(锁屏键),让触摸屏自身重新校准,然后在开锁试试。
参考技术B 首先定义两个整形的初始值,因为C语言的变量必须是先定义后试用,而且不赋初始值的话,其变量值是不定的。(C语言是不是这么定义整形我记不清楚了,java是这样的,如果我定义错了,你自己改下)int n=1,sum=0;
for(i=1;i<=10;i++)
for(j=1;j<=i;j++)
n=n*j;//计算1到10的阶乘
sum=sum+n;//把阶乘的结果累加!
sum就是1到10阶乘的和 参考技术C for(n=1;n<M:n++)
for(k=1;k<n;k++)
c=k*(k+1);
cont=cont+c;
大概就是这样,要双重FOR的。
以上是关于C语言求阶乘倒数之和的主要内容,如果未能解决你的问题,请参考以下文章