作业帮 > 综合 > 作业

计算1-1/3+1/5-1/7+…,直到最后一项的绝对值小于10-3(0.001)为止.(按四舍五入的方式精确到小数点后

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/09 08:08:56
计算1-1/3+1/5-1/7+…,直到最后一项的绝对值小于10-3(0.001)为止.(按四舍五入的方式精确到小数点后二位
#include
#include
int main()
{
int i=1;
\x05double x=1.0,sum=0;
\x05do
\x05{
\x05\x05x*=(-1.0)*(2*i-3)/(2*i-1);
\x05\x05i++;
\x05\x05sum=sum+x;
\x05}while(fabs(x)>1e-3);
\x05printf("%.2f",sum);
\x05return 0;
}
为什么提交是不对呢,哪里错了
x*=(-1.0)*(2*i-3)/(2*i-1);当i=3时,你的分母为3了,不是1;
x*=(-1.0)*(2*i-3)/(2*i-1);这句,当i=1时,x=1;i=2时,x=-1/3;i=3时,x=-1/3*(1/5)
x*=(-1.0)*(2*i-3)/(2*i-1);等价于x=x*(-1.0)*(2*i-3)/(2*i-1);
改成这样,
#include
#include
int main()
{
int i=1;
\x05double x=1.0,sum=0,k=1.0;
\x05do
\x05{
\x05\x05x=k/(2*i-1);
\x05\x05i+=2;
\x05\x05sum=sum+x;
\x05\x05k=-k;
\x05}while(fabs(x)>1e-3);
\x05printf("%.2f",sum);
\x05return 0;
};
你看行不
再问: i+=2;,应该是i++ #include double fenshu(int x); int main(void) { int i; double sum=0; int a=1; for (i=1; fenshu(i)>=0.001; i++) { sum = sum + a*fenshu(i); a = a*(-1); } printf("%f", sum); return 0; } double fenshu(int x) { double s; s = 1.0/(2*x-1); return s; } 这是我同学写的,提交成功了结果是0.784898,而我的是0.79 不知道我的为什么错了
再答: printf("%.2f",sum); 改成printf("%f",sum);因为你是要输出两位小数,系统四舍五入