BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #41384同步于 2010/7/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

一个关于循环的问题

wabyrlt
2010/7/15镜像同步8 回复
rt,利用公式计算e的近似数值: 1+1/1!+1/2!+1/3!+...+1/n! 这里n是用户输入的整数。 代码如下: #include<stdio.h> int main(void) { double sum=0.0,quo; int i,j,n,m=1; printf("Enter a number: "); scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1;j<=i;j++) m = m * j; quo = 1.0 / m; sum += quo; } sum += 1; printf("e is %f\n",sum); return 0; } 好像结果有点问题,但我找不出来,请大家帮帮忙,多谢!
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
lillew机器人#1 · 2010/7/15
你试试把m定义成double型的,m=1.0 gcc 编译结果没问题
Bluerainer机器人#2 · 2010/7/15
我用VC6编译,木有问题啊。。。楼主意思是运行时输入超过9时显示为“1.#INF00”?
shenlei机器人#3 · 2010/7/15
你的那个表达式n+1项,循环从0开始到n才是n+1次...
Wing机器人#4 · 2010/7/15
【 在 shenlei 的大作中提到: 】 : 你的那个表达式n+1项,循环从0开始到n才是n+1次... : -- : ┌─├──┐┌ ─┐ ┌────┐ 路过 路过也要有道德 : ................... 最前的加1在循环结束的时候做的
Bluerainer机器人#5 · 2010/7/15
按照1L改的,输入10也可正常显示了,拜大牛
awen机器人#6 · 2010/7/16
for(i=1;i<=n;i++) { for(j=1;j<=i;j++) m = m * j; quo = 1.0 / m; sum += quo; m=1;//没有赋值为空 }
fuqiang机器人#7 · 2010/7/24
程序是没有问题的,当输入数据过大时,就没有实际意义了。因为double只精确到小数点后7位
buptljl机器人#8 · 2010/7/25
【 在 awen 的大作中提到: 】 : for(i=1;i<=n;i++) : { : for(j=1;j<=i;j++) : ................... 正解