前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >练习2-15 求简单交错序列前N项和 (15分)

练习2-15 求简单交错序列前N项和 (15分)

作者头像
C you again
发布2021-03-16 12:14:17
3.3K1
发布2021-03-16 12:14:17
举报
文章被收录于专栏:IT技术圈

一、题目描述

本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。

输入格式:

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

输出格式:

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

输入样例:

10

输出样例:

sum = 0.819

二、思路分析

根据题目要求,是让我们计算 1 - 1/4 + 1/7 - 1/10 + ... 的前N项和。

观察发现:

  1. 序列的分母为 1,4,7,10 ... Xn-1,Xn,即 Xn - Xn-1 = 3(后一项比前一项大3)。
  2. 序列的分子为 1,-1,1,-1 ... - Xn-1,Xn,即 Xn / - Xn-1 = -1,这里的 X 均等于1(后一项除以前一项等于负一

给出步骤如下:

  1. 定义 int 类型的变量N,并从键盘输入正整数N。
  2. 定义 double 类型的变量 sum 并将它初始化为0.0,用于存储序列的前N项之和。
  3. 定义 int 类型的变量 d 作为分母,并初始化为1。由于序列的分母后一项比前一项大3,所以在每进行一次循环后 d 都需要增加3。
代码语言:javascript
复制
d + = 3;  //或者 d = d + 3;

4. 定义 int 类型的变量 status 并将它初始化为1,从前面的分析我们已经知道,序列的分子后一项除以前一项等于-1。

代码语言:javascript
复制
status = -status;

5. 使用 for 循环计算、求和。

代码语言:javascript
复制
int i;
for(i=1;i<=N;i++)
 {
   sum+=1.0/d*status;
   d+=3;
   status=-status;
 }

6. 按照“sum = S”的格式输出部分和的值S。

类似题目:《练习2-14 求奇数分之一序列前N项和 (15分)》

三、参考代码

根据以上分析,给出参考代码如下:

代码语言:javascript
复制
#include<stdio.h>
int main()
{
  int N;
  int status=1;
  scanf("%d",&N);
  int i;
  double sum=0.0;
  int d=1;
  for(i=1;i<=N;i++)
  {
    sum+=1.0/d*status;
    d+=3;
    status=-status;
  }
  printf("sum = %.3lf\n",sum);
  return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C you again 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、题目描述
  • 二、思路分析
  • 三、参考代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档