【项目2:麻烦的累加涨功夫】
计算(1) (2)
关注效率,要求用单重循环完成,第一个式子的计算不能用求幂函数pow()
[参考解答]
(1)
#include <stdio.h> int main( ) { int i,m=1; //m表示2的幂,1为2的0次幂,与循环相符 double sum=0, s=1.0; //s直接取double型,保证除的结果是浮点型 for(i=0; i<=8; ++i) { sum=sum+s/m; m*=2; //2的i次幂由此计算得到 s=-s; } printf("%f\n", sum); return 0; }
(2)
#include <stdio.h> int main( ) { int i,f=1; //f表示加数分母上的阶乘,初值1为1的阶乘 double sum=0, s=1.0; //s直接取double型,保证除的结果是浮点型 for(i=1; i<=9; ++i) { f*=i; //计算得到i的阶乘 sum=sum+s/f;//1楼指出的错误表达式是sum=sum+s*i/f; s=-s; } printf("%f\n", sum); return 0; }
时间: 2024-09-24 15:32:24