第三十四讲项目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)





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章