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

博客围绕“求给定精度的简单交错序列部分和”展开,该题目分值为15分,涉及C语言相关知识。

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


#include<stdio.h>
#include<math.h>
int main(void)
{
	int denominator, flag;
	double e, i, sum;
	scanf("%lf", &e);
	flag=1;
	denominator=1;
	sum=0;
	i=1.0; 
	do{
		i=flag*1.0/denominator;
		sum=sum+i;
		flag=-flag;
		denominator=denominator+3;
		}while(fabs(i)>e);
	printf("sum = %.6f\n", sum);
	
	return 0;
 } 

给定精度简单交错序列部分问题中,需要计算一个交错序列部分,直到最后一项的绝对值不大于给定精度 `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]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值