一、题目链接
http://noi.openjudge.cn/ch0105/33/
二、解题思路
⑴ 设定一个int变量sign,代表当前项的符号,设定一个double变量ans,代表求和结果,初始时sign为1,ans
为0;
⑵ 从第1项开始,到第n项为止,通过循环,做如下操作:
① 首先,令ans = ans + 1.0 * sign / i,也即将当前项1.0*sign/i累加到和上;
② 其次,令sign = -sign,也即更新下一项的符号;
⑶ 循环结束后,ans中存储了求和结果。
三、程序代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
double ans = 0;
int sign = 1;
for (int i = 1; i <= n; i++) {
ans = ans + 1.0 * sign / i;
sign = -sign;
}
System.out.printf("%.4f", ans);
}
}