第三十四讲项目2-麻烦的累加涨功夫

任务和代码:

/*
*Copyright (c)2017,CSDN学院
*All rights reserved.
*文件名称: main.c
*作 者: 伍志鹏
*完成日期: 2017年9月13日
*版本号: v1.0
*
*问题描述:  计算:(1)s=1-(1/(2^1))+(1/(2^2))-....+(1/(2^8))
*                (2)f=1-(1/2!)+(1/3!)-...+(1/9!)
*关注效率,要求用单重循环完成,第一个式子的计算不能用求幂函数pow()
*/
#include <stdio.h>
#include <stdlib.h>

/*
*   题目(1)s=1-(1/(2^1))+(1/(2^2))-....+(1/(2^8))
*/
int main()
{
    int i=0,m=1;    //m表示2的幂,1为2的0次幂,与循环相符
    double sum=0,s=1.0; //s直接取double型,保证除的结果是浮点型
    for(i;i<=8;++i)
    {
        sum=sum+s/m;
        m*=2;   //2的i次幂由此计算得到
        s=-s;
    }
    printf("%f\n",sum);
    return 0;
}

/*
*   题目(2)f=1-(1/2!)+(1/3!)-...+(1/9!)
*/
int main()
{
    int i=1,fect=1; //fect表示加数分母上的阶乘,初值1为1的阶乘
    double sum=0,s=1.0;     //s直接取double型,保证除的结果是浮点数
    for(i;i<=9;++i)
    {
        fect=fect*i;    //计算得到i的阶乘
        sum=sum+s/fect;
        s=-s;
    }
    printf("%f\n", sum);
    return 0;
}

运行结果:

题目(1)


题目(2)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wu_zpeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值