帮忙看看这个程序哪错了,运行结果是+INF,目的是求1+1/(1+2)+1/(1+2+3)+1/(1+2+3+4...+m)的和c语言

include<stdio.h>main(){inti,j,m;doubleitem,result;printf("Inputm:");scanf("%d",&m);re... include<stdio.h>
main()
{
int i,j,m;
double item,result;
printf("Input m:");
scanf("%d",&m);
result=1;
for(i=0;i<=m;i++)
{ item=0;
for(j=1;j<=i;j++)
item+=j;
item=1/item;
result+=item;
}
printf("%.10f",result);
getch();
}
展开
 我来答
zyh123101
2012-12-08 · 超过14用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:26.5万
展开全部
/*拿去直接运行吧……!*/
#include<stdio.h>
/*C的标准main函数是由返回值的,函数类型也是int的。不加int和return 0是微软特搞的,不推荐*/
int main()
{
int i,j,m;
double item,result;
printf("Input m:");
scanf("%d",&m);
result=0;
item=0;
for(i=1; i<=m; i++)
{
item+=i;
result+=1.0/item;
}
printf("%.4f\n",result);
return 0;
}
追问
那我的哪错了
追答
超出表示范围,具体原因如下
第一次循环的时候,i=0 内循环没有执行,那么item=0,当执行item=1/item的时候就等价于 item=1/0 0不能做分母,这个你应该知道的,但从理论上讲 1/0 就是无穷大 所以有了 INF 至于后面些都是由于那个原因造成的,你把外层循环初始值改为1就行了,因为没有必要从0开始。
ok 加分吧……!
来自:求助得到的回答
xu5237558997
2012-12-08 · 超过16用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:43.5万
展开全部
超出了double能表示的小数的极限,C,C++语言中就用INF表示超出范围
追问
可是·不管输入什么都是+INF
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2012-12-08 · TA获得超过229个赞
知道小有建树答主
回答量:470
采纳率:0%
帮助的人:216万
展开全部
李亚宁
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式