计算sum=1-1/2+1/4-...+1/n的值(直到1/n<0.000001),并显示出来。
题目写错了? 是sum=1-1/2+1/3-1/4-...+1/n吧
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
double sum = 0;
int n=1;
while (1)
{
double temp = 1.0 / n;
if (n % 2 == 0) //如果n是偶数 则- 1/n
temp = temp * -1;
sum += temp;
if (fabs(temp) <1e-6)
break; //精度达到1e-6时 跳出循环
n++;
}
printf("%lf", sum);
}
参考:
#include "stdio.h"
float math(int i,int n) {
float s=0;
float k=1;
while(i<=n) {
s=s+1.0/i*k; k=0-k; i++;
}
return s;
}
void main() {
int i=1,n;
float m;
printf("请输入n的值:\n");
scanf("%d",&n);
m=math(i,n);
printf("sum=%f\n",m);
}
你题目的解答代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
double sum=1,t,x=2;
int f=-1;
do
{
t = f/x;
sum += t;
x+=2;
f=-f;
} while (fabs(t)>=0.000001);
printf("%lf\n",sum);
return 0;
}
> 如有帮助,请点击我的回答下方的**【采纳该答案】**按钮帮忙采纳下,谢谢!
> 
#include<stdio.h>
#include<math.h>
int main()
{
double n=1;
float term=1.0,sign=1,sum=0;
while(fabs(1/n)>=1e-6)
{
term=sign*1/n;
sum=sum+term;
sign=-sign;
n++;
}
printf("sum=%f\n",sum);
return 0;
}
题目其实有点问题,1-1/2+1/4-...+1/n这里,分母的规律是2、4、6、8...还是1、2、4、8、16..?目前这些信息无法判断到底是哪种情况。两种情况都给你写了。
(1)2、4、6、8...规律的代码(也就是分母是等差数列的情况):
#include <stdio.h>
int main()
{
double sum = 1;
int i=2, flag = -1;
while (1.0 / i >= 0.000001) // 1/n<0.000001 结束循环
{
sum += flag * 1.0 / i;
i = i + 2; //i从2变成4,4变成6.。。依此类推
flag = -flag; //改变符号,i=2时时负数,i=4时为正数,依此类推
}
printf("%lf", sum);
return 0;
}
运行结果:
(2)1、2、4、8、16....规律的代码(也就是分母是等比数列的情况):
代码如下:
#include <stdio.h>
int main()
{
double sum = 1;
int i=2, flag = -1;
while (1.0 / i >= 0.000001) // 1/n<0.000001 结束循环
{
sum += flag * 1.0 / i;
i = i * 2; //i从2变成4,4变成8.。。依此类推
flag = -flag; //改变符号,i=2时时负数,i=4时为正数,依此类推
}
printf("%lf", sum);
return 0;
}
运行结果: