近似值
#include<stdio.h>#include<math.h>
int fun(int x);
int main()
{
double s=0,h,f,m;
int i=0,x,t=1;
scanf("%d",&x);
while(m>=1e-6)
{
h=pow(x,2*i+1);
f=fun(2*i+1);
m=h/f;
s=s+t*m;
i++;
t=-t;
printf("%lf",s);
}
}
int fun(int y)
{
int sum=1,i=1;
for(i=1;i<=y;i++)
{
sum=sum*i;
}
return sum;
}
用泰勒公式算sin(x)的近似值
这个为什么运行不出来 开个编译器警告,然后读一读编译器给的提示看看有没有帮助?
test.c:6:24: warning: variable 'm' is used uninitialized whenever function 'main' is called [-Wsometimes-uninitialized]
double s=0,h,f,m;
~~~~~~~~~~~~~~~^
test.c:9:15: note: uninitialized use occurs here
while(m>=1e-6) 本帖最后由 jackz007 于 2022-10-28 15:48 编辑
#include<stdio.h>
#include<math.h>
int fun(int y)
{
int sum , i ;
for(sum = i = 1 ; i <= y ; i ++) sum = sum * i ;
return sum ;
}
int main()
{
double s = 0 , h , f , m = 1 , x ;
int i = 0 , t = 1 ;
// scanf("%lf" , & x) ;
x = 3.1415926 / 6 ;
i = 1 ;
s = x ;
t = -1 ;
while(m >= 1e-6)
{
m = pow(x , 2 * i + 1) / fun(2 * i + 1) ;
s += t * m ;
i ++ ;
t = -t ;
}
printf("%lf\n" , s) ;
}
编译、运行实况:
D:\\C>g++ -o x2 x2.c
D:\\C>x2
0.500000
D:\\C> dolly_yos2 发表于 2022-10-28 15:18
开个编译器警告,然后读一读编译器给的提示看看有没有帮助?
我不会看这个提示,麻烦教我一下,还有我的源程序哪里错了啊? h-b-z-d-j-s-m 发表于 2022-10-30 20:16
我不会看这个提示,麻烦教我一下,还有我的源程序哪里错了啊?
警告说变量 m 在 main 中未初始化的情况下在 while(m>=1e-6) 处被使用了
导致的结果就是第一次判断循环条件的时候 m 的值是未定义的,可能根本就无法进入循环
页:
[1]