大佬我想知道我写的小小编程到底错在哪了

欠债的脱水橘猫 2019-11-21 04:59:01
大佬我的脑子又被驴踢了,我想知道再不用两重for循环的条件下我到底错在哪了
在前面两位大佬的指导下我已经对i的值进行初始化,以及将item的赋值提到了循环里,但是输入10,还是输出了11,并没有输出e的值

e=1+1/1!+1/2!+1/3!+....+1/n!求这个e的值。

#include<stdio.h>
int main()
{
double e=1,item;
int i=1,n;
printf("Input n:");
scanf("%d",&n);
while(i){
item=1;
item*=i;
i--;
}
for(i=1;i<=n;i++){
e=e+1.0/item;
}
printf("e=%.4f\n",e);
return 0;

}
...全文
40 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 8 楼 寻开心的回复:
#include<stdio.h>
int main()
{
double e=1,item;
int i=1,n;
printf("Input n:");
scanf("%d",&n);
while(i){
item=1;
item*=i;
i--;
} // 你这个while放到for的外面; while结束之后item就是固定值了,再放到for里面有啥用啊

for(i=1;i<=n;i++){
e=e+1.0/item;
} // 按照公式,item是阶乘,每次要变化的啊, 这里item被你写成了固定,那怎么可能对。 必须从while里面搬家回来
printf("e=%.4f\n",e);
return 0;

}
大佬你这回答太精辟了完美的解决了我的问题,非常感谢大佬
  • 打赏
  • 举报
回复
引用 8 楼 寻开心的回复:
#include<stdio.h>
int main()
{
double e=1,item;
int i=1,n;
printf("Input n:");
scanf("%d",&n);
while(i){
item=1;
item*=i;
i--;
} // 你这个while放到for的外面; while结束之后item就是固定值了,再放到for里面有啥用啊

for(i=1;i<=n;i++){
e=e+1.0/item;
} // 按照公式,item是阶乘,每次要变化的啊, 这里item被你写成了固定,那怎么可能对。 必须从while里面搬家回来
printf("e=%.4f\n",e);
return 0;

}
大佬你这回答太精辟了完美的解决了我的问题,非常感谢大佬
寻开心 2019-11-21
  • 打赏
  • 举报
回复
#include<stdio.h>
int main()
{
double e=1,item;
int i=1,n;
printf("Input n:");
scanf("%d",&n);
while(i){
item=1;
item*=i;
i--;
} // 你这个while放到for的外面; while结束之后item就是固定值了,再放到for里面有啥用啊

for(i=1;i<=n;i++){
e=e+1.0/item;
} // 按照公式,item是阶乘,每次要变化的啊, 这里item被你写成了固定,那怎么可能对。 必须从while里面搬家回来
printf("e=%.4f\n",e);
return 0;

}
  • 打赏
  • 举报
回复
引用 2 楼 寻开心的回复:

上个帖子都把完整的代码都给你了呀

#include<stdio.h>
int main(int n, void ** argv )
{
double e=1,item=1;
int i;
printf("Input n:");
scanf("%d",&n);

for(i=1;i<=n;i++){
e=e+1.0/item;
printf("%lf\n", e);
item *= i+1;
}
printf("e=%.4f\n",e);//这个输入10,输出11;
return 0;

}
大佬你的代码我试过了确实对,但是博大精深我还得花半个小时了解,现在我先把我的那个改了谢谢大佬
  • 打赏
  • 举报
回复
引用 1 楼 datoulaile123的回复:
while和for循环嵌套使用,还有你i=1,i--,那你的while循环不就只进一次了吗
大佬你说的好像很对,但是那怎么把i赋予初值让它有意义
  • 打赏
  • 举报
回复
大佬你说的好像很对,但是那怎么把i赋予初值让它有意义
寻开心 2019-11-21
  • 打赏
  • 举报
回复

上个帖子都把完整的代码都给你了呀

#include<stdio.h>
int main(int n, void ** argv )
{
double e=1,item=1;
int i;
printf("Input n:");
scanf("%d",&n);

for(i=1;i<=n;i++){
e=e+1.0/item;
printf("%lf\n", e);
item *= i+1;
}
printf("e=%.4f\n",e);//这个输入10,输出11;
return 0;

}

铖邑 2019-11-21
  • 打赏
  • 举报
回复
怎么还没搞定啊?一个循环就可以了啊
datoulaile123 2019-11-21
  • 打赏
  • 举报
回复
while和for循环嵌套使用,还有你i=1,i--,那你的while循环不就只进一次了吗

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧