问题:
f(n) = 1++
+
+.....+
;
分析:
知道是从1到n的,优先选择for循环。
#include<stdio.h>
int main()
{
int n;
int i;
double sum = 0.0;
scanf("%d",&n);
for(i=1;i<=n;i++){
sum += 1.0/i;
}
printf("f(%d)=%f\n",n,sum);
return 0;
}
看结果
那如果变成这样呢
f(n) = 1-+
-
+.....+
;
可以对以上程序做一点小改动;
#include<stdio.h>
int main()
{
int n;
int i;
double sum = 0.0;
int sign = 1;//设置一个变量改变n之前的符号
scanf("%d",&n);
for(i=1;i<=n;i++){
sum += sign*1.0/i;//第一次是加,第二次是减,第三次是加
sign = -sign;//每次循环都改变i的值
}
printf("f(%d)=%f\n",n,sum);
return 0;
}
看结果:
还有一种方法:
#include<stdio.h>
int main()
{
int n;
int i;
double sum = 0.0;
double sign = 1.0;
scanf("%d",&n);
for(i=1;i<=n;i++){
sum += sign/i;//第一次是加,第二次是减,第三次是加
sign = -sign;//每次循环都改变i的值
}
printf("f(%d)=%f\n",n,sum);
return 0;
}
直接定义double sign=1.0从而代替分子;
看结果;