簡體   English   中英

代碼:: Blocks 13.12錯誤-程序已停止工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM