Code :: Blocks 13.12错误 - 程序已停止工作

时间:2015-05-31 15:38:35

标签: c error-handling compiler-errors codeblocks

我正在使用代码块13.12。我为以下问题制定了一个程序: -

将功能评估为0.0001%的准确度。 Sinx = x - (x ^ 3/3!)+(x ^ 5/5!) - .....

输入x的值后出错。 它说“AccuracyOfSinx.exe已停止工作”。

#include<stdio.h>
#include<conio.h>

#define ACCURACY 0.000001
int main()
{
int n, num, mulx, fac, rem;
float x,term, sum;

printf("Enter x = ");
scanf("%f", &x);
num=1;
sum=0;
mulx=1;
for(n=1, term=1; term>ACCURACY ; n++)
{
 fac=num;
 do
  {
  num=num-1;
  fac=fac*num;                                /*Finds the factorial*/
  mulx=mulx*x;                                /*Computes x raised to num*/
  }
 while(fac>0);
 term = 1/fac;
 num=num+2;
 rem=n%2;                                     
 if(rem==0)                                   /* -ve sign is given to even position*/
  sum = sum-(mulx/fac);
 if(rem!=0)                                   /* +ve sign is given to odd position*/
  sum = sum+(mulx/fac);
 mulx = x;
}
printf("Sin(x)=%f", sum);
}

1 个答案:

答案 0 :(得分:1)

主要问题在于:

b

这是一个除零的情况。我在此语句之前打印了 term = 1/fac; 的值,并在accuracy.exe停止工作之前打印fac

0转到fac的主要原因是

0

要防止出现这种情况,请先添加 num=num-1; fac=fac*num; 条件以检查if的值,然后再将其用于计算num