【GESP】C++一级练习 luogu-B2070, 计算分数加减表达式的值
GESP一级知识点循环和条件判断应用,基础练习。
luogu-B2070
题目要求
描述
\[S_n = 1 - \frac{1}{2} + \frac{1}{3} - \frac{1}{4} + \frac{1}{5} - \frac{1}{6} +...+(-1)^{n-1} \times \frac{1}{n}。\]输入一个整数 $n$,求 $S_n$。
输入
输入为一行,含一个正整数 $n$,其中 $1 \leq n \leq 1000$。
输出
输出为一行,为 $S_n$ 的值,结果保留小数点后 $4$ 位小数。
输入样例-1
2
输出样例-1
0.5000
题目分析
- 读取整数 $n$ 的值
- 初始化变量 $ans$,用于存储结果
- 遍历从 $1$ 到 $n$ 的所有整数 $i$
- 根据 $i$ 的奇偶性,决定是否将 $1/i$ 加到或减去 $ans$
- 输出 $ans$ 的值,保留小数点后 $4$ 位
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <cstdio>
using namespace std;
int main() {
int n; // 定义一个整数n,用于存储输入的整数
scanf("%d", &n); // 从输入流中读取n的值
double ans = 0; // 初始化变量ans,用于存储结果
for (int i = 1; i <= n; i++) { // 遍历从1到n的所有整数i
if (i % 2 != 0) { // 如果i是奇数
ans += 1.0 / i; // 将1/i加到ans上
}
if (i % 2 == 0) { // 如果i是偶数
ans -= 1.0 / i; // 将1/i减去ans
}
}
printf("%.4f", ans); // 输出ans的值,保留小数点后4位
return 0; // 返回0,表示程序执行成功
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
本文由作者按照 CC BY 4.0 进行授权