老师要求用c++变一个求 1-1/2+1/3-1/4+...+1/99-1/100之值。
解决时间 2021-05-06 07:52
- 提问者网友:轻浮
- 2021-05-06 00:06
这是我写的代码,因为是初学,请指出错误,谢谢了。
#include <iostream>
using namespace std;
int main()
{
int n,m,sum1,sum2,s;
for (n=0;n<=49,n++)
sum1=0;
sum1=1/(2n+1);
for(m=1;m<=50;m++)
sum2=0;
sum2=1/(2m);
s=sum1+sum2;
cout<<"1-1/2+1/3-1/4+...+1/99-1/100=";
cout<<s;
return 0;
}
最佳答案
- 五星知识达人网友:爱难随人意
- 2021-05-06 00:32
#include <iostream>
using namespace std;
int main()
{
int n,m;
double sum1, sum2, s;
sum1 = 0; // 求1/1+1/3+1/5+...+1/99的和
for (n=0;n<=49;n++)
sum1 += 1.0/(2*n+1);
sum2 = 0;// 求-1/2-1/4-1/6-...-1/00的和
for(m=1;m<=50;m++)
sum2 += -1.0/(2*m);
s=sum1+sum2;
cout<<"1-1/2+1/3-1/4+...+1/99-1/100=";
cout<<s;
return 0;
}
由于结果是小数,所以要用double型来存储,另外 sum要用 += 累加,做除法的使用1换成用1.0,否则执行的是整数除法,只要分母n>1,1/n都是0,整数除法会截断小数部分,所以要用double。
你的代码其实可以简化
#include <iostream>
using namespace std;
int main()
{
int n, m;
double sum;
m = 1;
sum = 0;
for ( n = 1; n <= 100; ++n ) {
sum += m * 1.0 / n;
m = -m;
}
cout << sum;
return 0;
}
全部回答
- 1楼网友:夜风逐马
- 2021-05-06 04:24
你的这个不太好改啊,我重编了一个,你看看
#include <iostream>
using namespace std;
int main()
{
float n,m=0,sum=0;
for(n=1;n<=100;n++)
{
if(m==0)
{
sum=sum+1/n;
m=1;
}
else
{
sum=sum-1/n;
m=0;
}
}
cout<<"1-1/2+1/3-1/4+...+1/99-1/100="<<sum<<endl;
return 0;
}
运行结果是
1-1/2+1/3-1/4+...+1/99-1/100=0.688172
请按任意键继续. . .
- 2楼网友:胯下狙击手
- 2021-05-06 03:32
你对比一下我的就知道错在哪了,主要看那两个循环!
(当然,我只是凭感觉帮你该动一下而已,没调试,你自己调试一下)
#include <iostream>
using namespace std;
int main()
{
int n,m,s,sum1=0,sum2=0;
for (n=0;n<=49,n++)
sum1+=1/(2n+1);
for(m=1;m<=50;m++)
sum2+=1/(2m);
s=sum1+sum2;
cout<<"1-1/2+1/3-1/4+...+1/99-1/100=";
cout<<s;
return 0;
}
- 3楼网友:人類模型
- 2021-05-06 02:03
s,sum1和sum2都不能用int
应该用float 或者double
其他没错。
我要举报
大家都在看
推荐资讯