例题1:编写函数countpi,利用公式
计算π的近似值,当某一项的值小于10-5时,认为达到精度要求,请完善函数.
#include <stdio.h>
double countpi(int n)
{
int i;
double sum = 1.0;
for(i = 1;i<=n;i++)
{
sum = sum*i/(2*i+1);
}
return sum;
}
int main()
{
double countpi(int n);
int i;
double count = 1;
for(i = 1;countpi(i)>0.00001;i++)
{
count += countpi(i);
}
printf("%0.5f\n", 2*count);
return 0;
}
例题2:输入正整数n,计算1-1/3+1/5-1/7+…的前n项之和.用C语言程序解答
#include <stdio.h>
int main()
{
int flag,denominator,i,n;
double item , sum;
scanf("%d",&n);
flag = 1;
denominator = 1;
sum = item = 0;
for(i= 1;i<=n;i++)
{
item = flag * 1.0 / denominator;
sum += item;
denominator += 2;
flag = -flag ;
}
printf("sum = %.5f\n", sum);
return 0;
}
例题3:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和
#include <stdio.h>
int main()
{
double item,sum;
double i,fenmu,fenzi,cnt;
fenmu = 1;
fenzi = 2;
sum = item = 0;
for(i = 1;i<=20;i++)
{
item = fenzi / fenmu ;
sum += item ;
cnt = fenzi ;
fenzi = fenzi + fenmu;
fenmu = cnt;
}
printf(" %lf\n",sum);
return 0;
}
练习01:泰勒公式计算sin(x)
利用泰勒级数计算sin(x) 的值,直到最后一项的绝对值小于10-5,并统计共累加了多少项。
#include <stdio.h>
#include <math.h>
double fact(int n)
{
if (n == 0)
return 1;
return fact(n - 1)*n;
}
int main()
{
double x, sum = 0, item = 1;
int n = 1, flag = 1;
scanf("%lf", &x);
while (item >= 1e-5) {
item = pow(x, 2 * n - 1) / fact(2 * n - 1);
sum += flag * item;
flag = -flag;
n++;
}
printf("%.3lf\n%d\n", sum, n - 1);
return 0;
}