1/3-3/5+5/7-7/9…+19/21错在哪,该怎么解决
1/3-3/5+5/7-7/9…+19/21错在哪[codeC/C++][/code]#include iostreamusing namespace stdint main (){i
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需要重置值。
[解决办法]
[解决办法]#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时没有初始化,那它们的初值是未定义的,不能用作累加器