读书人

1/3-3/5+5/7-7/9…+19/21错在哪,该怎么

发布时间: 2012-10-17 10:25:47 作者: rapoo

1/3-3/5+5/7-7/9…+19/21错在哪
[code=C/C++][/code]#include <iostream>
using namespace std;
int main ()
{
int i=1;
double a,s,b,m,y;

while(i<=17)
{a=i/(i+2);s=s+a;
i=i+4;
}
while(i<=17)
{b=(i+2)/(i+4);m=m+b;
i=i+4;
}
y=s-m;

cout<<"y="<<y<<endl;

return 0;
}


错在哪

[解决办法]
s和m没有初始化吧,这样得到值会是随机数哦。第二个循环的i需要重置值。
[解决办法]

探讨
s和m没有初始化吧,这样得到值会是随机数哦。第二个循环的i需要重置值。

[解决办法]
#include<iostream>
using namespace std;
int main ()
{
double i=1;//要不把i声明为double 要不就在下面强制转换
double a,s=0,b,m=0,y;//s m 先初始化为0

while(i<=19)//注意这里
{
a=i/(i+2);
s=s+a;
i=i+4;
}

i=1;//注意这里把i变为1 因为刚刚i已经是21了
while(i<=15)//注意这里
{
b=(i+2)/(i+4);
m=m+b;
i=i+4;
}
y=s-m;

cout<<"y="<<y<<endl;
system("pause");//屏幕暂停
return 0;
}

结果为0.52092不知道对不对
[解决办法]
在第二个循环前要将i置1,再就是在声明s,m时没有初始化,那它们的初值是未定义的,不能用作累加器

读书人网 >C++

热点推荐