JAVA 计算并输出1-1/3+1/5-1/7+……,直到最后一项的绝对值小于eps为止

程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
读入1 个正实数eps,计算并输出1-1/3+1/5-1/7+……,直到最后一项的绝对值小于eps为止(要求每一项的绝对值均大于等于eps,并以float类型输出数据)。
例:括号内是说明
输入
2 (repeat=2)
1E-4
0.1
输出
0.7853
0.8349

下面是我写的,各位大虾看看哪错了,感谢~
import java.util.Scanner;
public class test40006 {
public static void main(String[] args) {
int ri, repeat;
int temp, flag;
double eps, item, sum;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
eps=in.nextDouble();
sum=1;
for(item=1;1/(2*item+1)>=eps;item=item++){
if(item%2>=1)
sum=sum-1.0f/(2*item+1);
else sum=sum+1.0f/(2*item+1);
}
System.out.println((int)(sum*10000+0.5)/10000.);
}
}
}

for(item=1;1/(2*item+1)>=eps;item=item++){
改成如下代码:
for (item=1;1/(2*item+1)>=eps;item++) {
刚才走查了一下你的代码,发现如下问题:
1、item=item++ // 这么写导致item永远都等于1
当第二次遍历for时,item++的值是1,而你又将1给了item,所以item的值又变成了1
当每三次……
当第四次……
然后,就变成了死循环
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-04-11
你好!eps具体是多少,你可以改代码中变量值 public static void main(string[] args) { double eps = 0.001; double item = 1.0, sum = 0.0; int i = 1; while (math.abs(item) >= eps) { sum += item; if (i % 2 == 0) item = 1.0 / (2 * i + 1); else item = -1.0 / (2 * i + 1); i++; } system.out.println("sum = "+sum); }
第2个回答  2012-03-31
把1/(2*item+1)>=eps;改成1.0/ 接着 item ++就可以了 不用item=item++ 你试试

...计算并输出1-1\/3+1\/5-1\/7+……,直到最后一项的绝对值小于eps为止
你好!eps具体是多少,你可以改代码中变量值 public static void main(String[] args) { double eps = 0.001;double item = 1.0, sum = 0.0;int i = 1;while (Math.abs(item) >= eps) { sum += item;if (i % 2 == 0)item = 1.0 \/ (2 * i + 1);else item = -1.0...

JAVA 计算并输出1-1\/3+1\/5-1\/7+……,直到最后一项的绝对值小于eps为止...
1、item=item++ \/\/ 这么写导致item永远都等于1 当第二次遍历for时,item++的值是1,而你又将1给了item,所以item的值又变成了1 当每三次……当第四次……然后,就变成了死循环

读入1 个正实数eps,计算并输出1-1\/3+1\/5-1\/7+……,直到最后一项的绝对...
\/\/程序功能:从键盘上输入一个正整数 repeat (0<repeat<10),做repeat 次下列运算:\/\/ 读入1个正实数eps,计算1-1\/3+1\/5-1\/7+...的前n 项和, 直到最后一项 \/\/ 的绝对值小于eps(保留6位小数)。\/\/提示:除在指定位置添加语句之外,请不要改动程序中的其他内容。include <stdio.h>...

读入1 个正实数eps,计算并输出1-1\/3+1\/5-1\/7+⋯⋯,直到最后一项...
for后面的两条语句都应该在循环体内,所以应该用花括号。

java求1-1\/3+1\/5-1\/7+……
param eps return s 每一次的运行结果 \/ private static double count(int repeat, double eps) { double s=0;\/\/首先计算 1-1\/3+1\/5-1\/7+……\/\/需要考虑符号和分母变化 long count=0;\/\/项目数 1是第一项 -0.3^3是第二项 ……count=cishu(eps);\/\/求出项目数 for (long j=1...

编程计算1-1\/3+1\/5-1\/7+…,直到最后一项小于10e-4.编程并输出正确结果...
include<stdio.h> include<math.h> int main(){ float s=0,m,n=1,c=-1;do{ c=c*(-1);m=c\/n;n=n+2;s=s+m;\/\/printf("c=%f,m=%f,n=%f,s=%f",c,m,n,s);}while(fabs(m)>=0.0001);printf("%f",s);return 0;} ...

...计算并输出1-1\/3+1\/5-1\/7+……,直到最后一项的
int main(){int temp,flag;double eps,item,sum;scanf("%lf",&eps);\/*﹉﹉﹉﹉*\/sum=1,item=1;for(temp=1;item>=eps;) {temp+=2; item=1.0\/temp; sum+=temp%4==1?item:-item; }printf("%.6f\\n",sum);return 0;} ...

...1\/4 + 1\/7 - 1\/10 + ... 直到最后一项的绝对值不大于给定精度eps...
错误的那两行的条件,按图2的代码,说明如果首项小于,等于eps,那么一次都不会计算,sum就一直是0

C语言 用1\/π=1-1\/3+1\/5-1\/7+...公式求π的近似值,直到最后一项的绝对...
很久不编C程了,不知有没写错,你试试吧。main(){ int n=1;float x=1, eps=1.0;while(eps>=0.0001){ x=x-1.0\/(n+2);x=x+1.0\/(n+4);eps=1.0\/(n+4);n=n+4;} printf("pi=%f",1\/x);}

利用公式PI=4*(1-1\/3+1\/5-1\/7……). 要求:直到最后一项的绝对值小于10...
const double eps=1e-8;double x,y=1,n=3,PI=1.0;do { y=-y;x=y\/n;PI+=x;n=n+2.0;}while (fabs(x)>=eps);

相似回答