读入一个正实数eps, 计算并输出1-1/3+1/5-1/7+……,直到最后一项的绝对值小于eps。
例:
输入:1E-4
输出:0.785348
输入:0.1
输出:0.834921
#include <stdio>
#include <math>
int main()
{
double eps;
scanf("%lf", &eps);
double f = 1.0;
double sum = f;
int count = 0;
while(abs(f) >= eps)
{
count++;
f = (count%2==0?1.0:-1.0)/(2.0*count+1);
sum += f;
}
printf("%lf", sum);
return 0;
}
#include <stdio.h>
#include <math.h>
main()
{
float sum = 0, term = 1,n = 1;
int sign = 1;
while (fabs(term) >= 1e-4) //while后面无';'
{
sum = sum + term;
sign = -sign;
n = n + 2;
term = sign * (1/n);
}
printf("sum=%f\n",sum);
}
#include <stdio.h>
int main()
{
int n=1,flag = 1;
double item = 0.eps,sum = 0;
scanf("%e",&eps);
do
{
item = 1.0/n;
sum += flag * item;
flag *= -1;
n+=2;
}while(item >= eps);
printf("%lf",sum);
}
供参考:
#include <stdio.h>
#include <math.h>
int main()
{
int i;
double s, eps;
scanf("%lf", &eps);
for (i = 1, s = 0; fabs(1.0 / (2 * i - 1)) > eps; i++)
i % 2 == 1 ? s += 1.0 / (2 * i - 1) : s -= 1.0 / (2 * i - 1);
printf("s=%f", s);
return 0;
}