[英]Code::Blocks 13.12 error - program has stopped working
我正在使用代碼塊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); }
主要問題在於:
term = 1/fac;
這是被零除的情況。 我在此語句之前打印了fac
的值,並且在precision.exe停止工作之前將其打印為0
。
fac
變為0
主要原因是
num=num-1;
fac=fac*num;
為了防止這種情況,請在將其用於計算fac
之前,添加一個if
條件以檢查num
的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.