一、题目链接
http://noi.openjudge.cn/ch0105/33/
二、解题思路
◎ 定义并输入int类型的整数n,代表分数加减表达式;定义int类型的整数sign,代表每一项的符号,初始时sign为1;
◎ 定义double类型的浮点数ans,代表分数加减表达式求和结果,初始时ans为0;
◎ 从第一项开始,到最后一项为止,利用循环i处理如下:
→ 首先,令ans = ans + 1.0 * sign / i,也即将当前项累加到和上;
→ 其次,令sign = -sign,也即更新下一项的符号;
循环i结束后,ans中存储了分数加减表达式求和结果;
◎ 保留4位小数输出ans。
三、Java程序
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);
}
}
四、C++程序
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
double ans = 0;
int sign = 1;
for (int i = 1; i <= n; i++)
{
ans = ans + 1.0 * sign / i;
sign = -sign;
}
printf("%.4f", ans);
return 0;
}