首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-10-17 
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需要重置值。
[解决办法]

探讨
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时没有初始化,那它们的初值是未定义的,不能用作累加器

热点排行