c语言题目 求1-1⼀2+1⼀4-1⼀8+1⼀16 …..+(-1⼀2)n值,直到最后元素的小于10-4

2024-11-27 02:04:57
推荐回答(4个)
回答1:

程序如下:

#include

#include

void main()

{

double sum=0;

int i=0;

while(fabs(pow(-0.5,i))>=pow(10,-4))

{

sum+=pow(-0.5,i);

i++;

}

printf("%lf\n",sum);

}

结果:

回答2:

#include "stdio.h"

#include "math.h"

int main()

{

   double sum=0,t=1;

   int i,m=1;

   for(i=0;;i++)

   {

         t=m*pow(0.5,i);

         sum+=t;

         m=-m;

         if(fabs(t)<1e-4)

               break;

 

   }

   printf("1-1/2+1/4-1/8+...=%lf\n",sum);

}

回答3:

#include
#include
main()
{
int n=0;
double sum=1,k=-0.5,t=1,m;
while(fabs(t)>0.0001)
{
t=t*k;
m=t;
sum=sum+m;
n++;
}
printf("n=%d ,sum=%lf\n",n,sum);
}

回答4:

可以化简成
1/2+1/8+1/32+...+1/(2*(4--(n-1)次方))

int main(void)
{
int n = 0;
double s = 0.0,a;
for(a = 1/2;a < 0.00001;a /= 4.0)
{
s += a;
}
////应为上面没一项是原式中的两项相加的结果且这两项分别为2a , -a,所以如果2a也满足要求,就不要最后一项-1了
if((2*a)<0.00001)
s += a;
printf("s = %lf\n",s);
return 0;
}