Page 49, 自立题十七

这道题,好像是找通项公式样的,不过比较麻烦>_< 用了一堆变量,出这题的真是闲着没事干呀。。。。


【题目】

求下述3个序列的累加和(每一序列各累加n项,正整数n通过cin从键盘输入)。


【提示】

书上的提示大概是说出了求和的规律,大家应该都看得出来吧~?我就不打了>_<打字很麻烦的

【代码】

/************
 * 2013.10.23
 * P49 自立题17
 * 算序列和
 ************/
#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
    void Calc(int, double&, double&, double&);
    int n;
    double ans1=0, ans2=0, ans3=0;

    cout<<"Positive integer n=?";
    cin>>n;
    Calc(n, ans1, ans2, ans3);
    cout<<"s1="<<ans1<<endl;
    cout<<"s2="<<ans2<<endl;
    cout<<"s3="<<ans3<<endl;
    return 0;
}

void Calc(int n, double &ans1, double &ans2, double &ans3)
{
    int i, j;
    double Down_Left_2 = 1, Down_Left_1 = 2, Temp_Down, S2_Up = 2, S3_Down = 0;

    for(i=1;i<=n;i++)
    {
        //===========s1=========
        if(i % 2 == 0)
        {
            ans1 += ((i / 2) / (3.0 * (i / 2) + 1));
        }else{
            ans1 += (i / (5.0 + 6 * (i / 2)));
        }
        //===========s2=========
        S2_Up += (i - 1);
        switch (i)
        {
            case 1:
                {
                    ans2 += (S2_Up / Down_Left_2);
                    break;
                }
            case 2:
                {
                    ans2 += (S2_Up / Down_Left_1);
                    break;
                }
            default:
                {
                    ans2 += (S2_Up / (Down_Left_1 + Down_Left_2));
                    Temp_Down = Down_Left_1;
                    Down_Left_1 += Down_Left_2;
                    Down_Left_2 = Temp_Down;
                }
        }
        //==============S3============
        S3_Down = 0;
        for(j=1;j<=i;j++)
        {
            S3_Down +=(3 * j - 2);
        }
        if(i % 2 == 0)
        {
            ans3 -= ((2 * i - 1) / (S3_Down));
        }else{
            ans3 += ((2 * i - 1) / (S3_Down));
        }
    }
}

/*********
* 7sDream
* 19:54
*********/

【结果】




恩,这题就是找规律和按照规律写代码有点绕,而且要注意累加和的变量类型,然后就是两个整数型相除得数还是整数型。。。所以必要的时候要加“.0”
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值