h-b-z-d-j-s-m 发表于 2022-10-28 14:55:17

近似值

#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)的近似值
这个为什么运行不出来

dolly_yos2 发表于 2022-10-28 15:18:22

开个编译器警告,然后读一读编译器给的提示看看有没有帮助?
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:46:10

本帖最后由 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>

h-b-z-d-j-s-m 发表于 2022-10-30 20:16:48

dolly_yos2 发表于 2022-10-28 15:18
开个编译器警告,然后读一读编译器给的提示看看有没有帮助?

我不会看这个提示,麻烦教我一下,还有我的源程序哪里错了啊?

dolly_yos2 发表于 2022-10-30 22:08:18

h-b-z-d-j-s-m 发表于 2022-10-30 20:16
我不会看这个提示,麻烦教我一下,还有我的源程序哪里错了啊?

警告说变量 m 在 main 中未初始化的情况下在 while(m>=1e-6) 处被使用了
导致的结果就是第一次判断循环条件的时候 m 的值是未定义的,可能根本就无法进入循环
页: [1]
查看完整版本: 近似值