循环-27. 求给定序列前N项和之五(15)

本文介绍了一种计算序列1+1/2+1/3+...的前N项之和的方法,并提供了C、C++及Java三种语言的实现代码。用户只需输入一个正整数N,程序将输出该序列的前N项和,结果精确到小数点后六位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


本题要求编写程序,计算序列 1 + 1/2 + 1/3 + ... 的前N项之和。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。

输入样例:
6
输出样例:
sum = 2.450000
C程序:
#include 
int main(void) {
	int i, n;
	double sum = 0;
	scanf("%d", &n);	
	for(i = 1; i <= n; ++i) {
		sum += 1.0 / i;
	}
	printf("sum = %f\n", sum);
	return 0;
}
C++程序:
#include 
#include 
using namespace std;
int main() {
	int n;
	cin >> n;	
	double sum = 0;
	for(int i = 1; i <= n; ++i) {
		sum += 1.0 / i;
	}
	cout << "sum = " << fixed << setprecision(6) << sum << endl;
	return 0;
}
Java程序:
import java.util.Scanner;
import java.text.DecimalFormat;
public class Main {
   public static void main(String[] args) {
      Scanner in = new Scanner(System.in);
      int n = in.nextInt();
      double sum = 0;
      for(int i = 1; i <= n; ++i) {
         sum += 1.0 / i;
      }
      System.out.println("sum = " + new DecimalFormat("#.000000").format(sum));
   }
}
### 计算交错序列 N 为了实现计算交错序列 N ,可以采用循环结构来逐累加或减去对应的数值。以下是基于 C 语言的一个通用解决方案: #### 实现代码 以下是一个完整的 C 程序,用于计算给定形式的交错序列 N 。 ```c #include <stdio.h> int main() { int n; scanf("%d", &n); double sum = 0.0; for (int i = 1; i <= n; i++) { if (i % 2 != 0) { // 奇数为正 sum += (double)i / (2 * i - 1); } else { // 偶数为负 sum -= (double)i / (2 * i - 1); } } printf("%.3f\n", sum); // 输出保留三位小数 return 0; } ``` 此代码实现了输入整数 `N` 后,按照指定公式逐步计算交错序列的每一并累积到总中[^3]。 --- #### 关键点解析 1. **输入处理** 使用标准输入函数 `scanf` 获取用户输入的整数 `N` 表示要计算数[^1]。 2. **逻辑判断** 利用条件语句区分奇偶:当索引变量 `i` 是奇数时执行加法操作;如果是偶数,则执行减法操作。 3. **浮点运算精度控制** 将分子 `(double)i` 转换为双精度浮点型数据类型以确保除法结果具有足够的精确度。 4. **输出格式化** 结果通过 `printf` 函数打印出来,并设定其显示的小数位数为三[`%.3f`]以便于阅读与比较。 --- #### 示例运行 假设输入值为 `5` ,则程序会依次完成如下计算过程: - 第一 \(+\frac{1}{1}\)=\(+1\) - 第二 \(-\frac{2}{3}\)\(-0.667\) - 第三 \(+\frac{3}{5}\)\(=+0.6\) - 第四 \(-\frac{4}{7}\)\(-0.571\) - \(+\frac{5}{9}\)\(≈+0.556\) 最终得出的结果约为 `0.918`. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值