注册 登录
编程论坛 C++教室

求问:为什么编译运行会出现cpp1.exe无响应?

by_stro 发布于 2013-09-29 01:17, 671 次点击
题目:
用while语句编写程序计算s=1+ 1/2 + 1/4 + 1/7 + 1/11 ....的值,当第i项的值<10-4时结束。
我的答案是:
程序代码:
#include <iostream.h>
int main()
{
double s,m;
int i=0;
s=1;
m=1/i+1;
while(m>=0.0001)
{
    i=i+1;
    m=1/((1/m)+i);
    s=m+s;
}   
cout<<"答案是"<<s<<endl;
}

但是,就会cpp1.exe停止工作。。。
如果,把int i=0; 改为 double i=0;
就可以运行。。。
请问:为什么?另外,我这样算,对吗?
3 回复
#2
rjsp2013-09-29 08:52
int i=0;
s=1;
m=1/i+1;

不就相当于 m = 1/0 + 1 嘛,1/0 你说应该等于几?
#3
qunxingw2013-09-29 12:24
程序代码:
int main()
{
double s,m;
int i=0,n=1;
s=0;
m=1.0;
while(m>=0.0001)

{
    n=n+i;
    m=1.0/n;
    s=m+s;
    i=i+1;
}   
cout<<"答案是"<<s<<endl;
}


#4
风雨1232013-10-01 17:54
这个跟精确度有关 , m=1/((1/m)+i);  m为double ,i为int 精确度不同
1