7-32 求给定精度的简单交错序列部分和 (15分)

该程序计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的部分和,直到最后一项的绝对值小于给定精度eps。输入一个正实数eps,输出部分和,精确到小数点后六位。注意,部分和初始值应为1,因序列首项为1。

本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + … 直到最后一项的绝对值不大于给定精度eps。

输入格式:
输入在一行中给出一个正实数eps。

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

输入样例1:

4E-2

输出样例1:

sum = 0.854457

输入样例2:

0.02

输出样例2:

sum = 0.826310
#include<stdio.h>
int main(
给定精度简单交错序列部分问题中,需要计算一个交错序列部分,直到最后一项的绝对值不大于给定精度 `eps`。下面是几种不同语言的实现代码: ### C语言实现1 ```c #include<stdio.h> #include<math.h> int main(void) { double eqs = 0; double sum = 1; double down = 4; double num = 1.0; double bridge = -1.0; scanf("%lf", &eqs); while(fabs(num) > eqs) { num = bridge / down; sum += num; bridge = -1.0 * bridge; down += 3; } printf("sum = %.6lf", sum); return 0; } ``` 该代码首先定义了精度值 `eqs`、的初始值 `sum`、母的初始值 `down`、每一项的初始值 `num` 以及变号系数的初始值 `bridge`。通过 `scanf` 接收用户输入的精度值,在 `while` 循环中,当当前项的绝对值大于精度值时,继续计算每一项的值并更新、变号系数以及母,最后输出计算得到的的值 [^3]。 ### C语言实现2 ```c #include <stdio.h> #include <math.h> int main() { double sum = 0; int sign = 1; int fm = 1; double num = sign * 1.0 / fm; double eps; scanf("%lf", &eps); while (fabs(num) > eps) { sum += num; fm += 3; sign = -sign; num = sign * 1.0 / fm; } sum += num; printf("sum = %.6f", sum); return 0; } ``` 此代码同样是计算交错序列部分,定义了部分 `sum`、符号位 `sign`、母 `fm` 以及每一项的值 `num`。通过 `scanf` 读取用户输入的精度 `eps`,在 `while` 循环中,当当前项的绝对值大于精度时,更新母、符号位以及每一项的值,最后输出结果 [^4]。 ### C语言实现3 ```c #include<stdio.h> int main() { int i, f = -1; double e, s = 0; scanf("%lf", &e); for (i = 1;; i = i + 3) { f = -1 * f; s = s + f * 1.0 / i; if (1.0 / i <= e) break; } printf("sum = %.6lf", s); return 0; } ``` 该代码使用 `for` 循环来计算交错序列部分,定义了变号系数 `f`、精度 `e` 以及 `s`。在 `for` 循环中,不断更新变号系数的值,当某一项的绝对值小于等于精度时,跳出循环并输出结果 [^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值