java 求1-1/2+1/3-1/4+1/5-.....
求1-1/2+1/3-1/4+……/*读入1个正整数n(n<=100),计算并输出1-1/2+1/3-1/4+……的前n项和(四舍五入保留小数4位)。例:括号内是说明输入...
求1-1/2+1/3-1/4+……
/*读入1 个正整数 n(n<=100),
计算并输出1-1/2+1/3-1/4+……的前n项和(四舍五入保留小数4位)。
例:括号内是说明
输入
2 (repeat=2)
10
3
输出
0.6456
0.8333*/
importjava.util.Scanner;
publicclass Test40004 {
public static void main(String[] args) {
int ri, repeat;
int i, n, flag;
float sum;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
n=in.nextInt();
/*--------------------*/
sum=0;
flag=1;
for(i=1;i<=n;i++)
{sum=sum+(float)flag/i;
flag=-flag;}
System.out.println((long)(sum*10000+0.5)/10000.);
}
}
}
例题中从哪看出第一次运算是1减? 接着又是加呢? 展开
/*读入1 个正整数 n(n<=100),
计算并输出1-1/2+1/3-1/4+……的前n项和(四舍五入保留小数4位)。
例:括号内是说明
输入
2 (repeat=2)
10
3
输出
0.6456
0.8333*/
importjava.util.Scanner;
publicclass Test40004 {
public static void main(String[] args) {
int ri, repeat;
int i, n, flag;
float sum;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++){
n=in.nextInt();
/*--------------------*/
sum=0;
flag=1;
for(i=1;i<=n;i++)
{sum=sum+(float)flag/i;
flag=-flag;}
System.out.println((long)(sum*10000+0.5)/10000.);
}
}
}
例题中从哪看出第一次运算是1减? 接着又是加呢? 展开
3个回答
展开全部
flag=1;
for(i=1;i<=n;i++)
{sum=sum+(float)flag/i;
flag=-flag;}
flag是一个符号标记 当为1说明是正数,如果为负说明是负数
(float)flag/i; 这里相当于 1/1 -1/2 1/3 ....
for(i=1;i<=n;i++)
{sum=sum+(float)flag/i;
flag=-flag;}
flag是一个符号标记 当为1说明是正数,如果为负说明是负数
(float)flag/i; 这里相当于 1/1 -1/2 1/3 ....
追问
n=in.nextInt();
sum=0;
flag=1;
for(i=1;i<=n;i++)
{sum=sum+(float)flag/i;
flag=-flag;}
如果n=3;
那么第一次循环 n=1;i=1 ;sum=0+(1.0)/1吧?随后flag再等于-1 并进入第二次循环 ...
追答
就是这么理解,你那么搞不懂
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for循环,第一次sum=0+(float)1/1;然后flag=-1;第二次sum=1+(-1/2);然后flag=-(-1);后面依次累加sum,flag则是一次1一次-1。希望你能看懂
追问
我只是不明白第一次执行for的时候为什么不是 正数1-1/2?sum第一次执行时0啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sum=sum+(float)flag/i;
flag=-flag; 这两句 第一次是正数,然后执行之后编程负数,不就是减了吗,接着执行减,到第三次的时候又编程了正数
flag=-flag; 这两句 第一次是正数,然后执行之后编程负数,不就是减了吗,接着执行减,到第三次的时候又编程了正数
更多追问追答
追问
第一次执行sum=sum+(float)flag/i; flag=-flag; sum第一次为0的啊
追答
flag是1啊~ 所以第一次是0+1/i 然后flag=-flag ,就变成了-1了 第二次就相当于1+(-1/i)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询