C语言运行不出结果,不知道为什么

#include<stdio.h>intmain(void){doubles,i=1,n,eps=0.001;for(s=0;;i++){n=i*(i+1);s=s+1/... #include <stdio.h>
int main(void) {
double s,i=1,n,eps=0.001;
for(s=0;;i++)
{
n=i*(i+1);
s=s+1/n;
if(n<=eps) break;
}
printf("s=%lf\n",s);
return 0;
}
用vc6.0运行后就只有一个光标在闪,但就是没有结果显示
展开
 我来答
jun4567765
2014-10-26
知道答主
回答量:16
采纳率:0%
帮助的人:11.2万
展开全部
你的for循环出错了,for(语句1;语句2;语句3)语句2是用来控制循环长度的,而你的语句2是个空语句所以无限循环。所以你要么添加一个语句2来限制循环长度,要么修改break前边的条件使他能够获得break跳出循环的条件。从你的编程来看我感觉这个用while循环更好。c语言有3种循环,for循环最实用与知道循环次数的条件,while适用于不知道循环次数但是知道限制循环的条件的情况,而do-while和while基本一样,区别是do-while一定会执行一次循环节。
Newport_ch
2014-10-26 · 超过25用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:58.9万
展开全部
//程序进入死循环了,所以得不到结果,具体分析如下
#include <stdio.h>
int main(void) {
double s,i=1,n,eps=0.001;
for(s=0;;i++)
{
n=i*(i+1); //n值是个永远大于1的值
printf("n=%lf\n",n);
s=s+1/n;
if(n<=eps) break; //永远无法达到这个条件,所以程序陷入死循环
}
printf("s=%lf\n",s);
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-10-26
展开全部
我想你可能在确定小数的精度,循环的判断条件应该是”1/n“小于等于“eps”
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
肯帕奇诺
2014-10-26 · TA获得超过160个赞
知道小有建树答主
回答量:354
采纳率:0%
帮助的人:213万
展开全部
i是整数,n=i*(i+1);怎么可能小于eps=0.001。
追问
可是已经定义了i是double型了啊,可以详细给我讲下吗,我是初学者
追答
i初始定义是1,i*(i+1)怎么可能小于1呢,更别说小于eps了,你在循环里加入一个输出,输出n,你就可以看一下n的值了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式