第三十四講項目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)





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