C++输入一个奇数n,求1+1/3+1/5……1/n之间的和,保留3位小数
时间: 2023-09-05 21:09:11 浏览: 48
好的,我可以帮你解决这个问题。下面是 C++ 的代码实现:
```c++
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n;
double sum = 0.0;
cin >> n;
for (int i = 1; i <= n; i += 2) {
sum += 1.0 / i;
}
cout << fixed << setprecision(3) << sum << endl;
return 0;
}
```
解释一下代码:
1. 首先,我们定义了变量 `n` 用来存储输入的奇数,以及变量 `sum` 用来存储求和的结果,初始化为 0。
2. 然后,我们使用 `cin` 从标准输入读入一个奇数 `n`。
3. 接着,我们使用一个 for 循环,从 1 开始,每次加 2,直到 n。在循环中,我们累加 1/i 到 `sum` 中。
4. 最后,我们使用 `cout` 输出 `sum`,并使用 `fixed` 和 `setprecision(3)` 保留 3 位小数。
希望这个代码可以帮助你解决问题。
相关问题
c++求1/2+1/3+1/n的和并保留三位小数
这个问题可以使用循环来解决。以下是代码示例:
```
n = 5 # 假设n为5
sum = 0 # 初始和为0
for i in range(2, n+1):
sum += 1 / i # 将每个数的倒数加入到和中
print("%.3f" % sum) # 保留三位小数并输出结果
```
输出结果为:0.783
c++求1-1/3+1/5-1/7+……
以下是三种C++求1-1/3+1/5-1/7+……的方法:
方法一:使用一个变量来记录符号,循环中每次加上当前项的值乘以符号,最后输出结果。
```c++
#include <iostream>
using namespace std;
int main() {
int i, sign = 1;
double sum = 0.0;
for (i = 1; i <= 100; i += 2) {
sum += sign * 1.0 / i;
sign = -sign;
}
cout << sum << endl;
return 0;
}
```
方法二:在循环体里加入正负号来实现加减。
```c++
#include <iostream>
using namespace std;
int main() {
int i;
double sum = 0.0;
for (i = 1; i <= 100; i++) {
if (i % 2 == 0) sum -= 1.0 / i;
else sum += 1.0 / i;
}
cout << sum << endl;
return 0;
}
```
方法三:加入flag来控制单双数的符号。
```c++
#include <iostream>
using namespace std;
int main() {
int i;
double sum = 0.0;
int flag = 1;
for (i = 1; i <= 100; i++) {
sum += flag * 1.0 / i;
flag = -flag;
}
cout << sum << endl;
return 0;
}
```