【项目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;
}