
帮忙看看这个程序哪错了,运行结果是+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();
} 展开
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();
} 展开
3个回答
展开全部
/*拿去直接运行吧……!*/
#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;
}
#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 加分吧……!
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询