#include<stdio.h>
#include<math.h>
int main(){
float a=1,sum=0;
int sign=1;
float term=1;
while(fabs(term)>=1e-6){
sum=sum+term;
sign=-sign;
a=a+1;
term=sign/a;
}
printf("ln2=1-1/2+1/3-1/4...=%f\n",sum);
getchar();
getchar();
return 0;
}
考虑当n=10和n=100的值
#include<stdio.h>
#include<math.h>
void a(float n){
float a=1,sum=0,term=1;
int sign=1;
printf("%f\n",1/n);
while(fabs(term)>=(1/n)){
sum=sum+term;
sign=-sign;
a++;
term=sign/a;
}
printf("1-1/2+1/3-1/4...=%f",sum);
}
int main(){
printf("请输入n的值:");
int m;
scanf("%d",&m);
a(m);
getchar();
getchar();
return 0;
}
整型相除结果还是整型。
1/1 = 1
1/2 = 0
1/3 = 0
所以结果永远是1
把t=1/i改成 t = 1.0/i 就可以了
#include<stdio.h>
#include<stdlib.h>
void Sum(int n){
int i=1;
float sum=0;
while(i<=n){
if(i%2==0)
sum-=1.0/i;
else
sum+=1.0/i;//1.0要注意 ,极易出错
i++;
}
printf("%f",sum);
}
int main(){
int n;
printf("请输入n的值");
scanf("%d",&n);
Sum(n);
system("pause");
return 0;
}