#include <stdio.h>
void main()
{
int i,n,jiecheng=1;
double s=0.0;
printf("請輸入n的值");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
jiecheng=jiecheng*i;
s=s+(1.0/jiecheng);
}
printf("結果為%lf",s);
}
uj5u.com熱心網友回復:
int只能算到12!uj5u.com熱心網友回復:
大概是這個原因jiecheng=jiecheng*i這個似乎是階乘規模增長
導致int jiecheng溢位了
經跟蹤這個數值變為0了。
這樣導致1.0/0,導致無窮大錯誤。
導致s=inf
uj5u.com熱心網友回復:
估計跟編譯器有關系VS2015 C++環境,long double 時也是inf
#include<stdio.h>
int main()
{
int i, n, jiecheng = 1;
long double s = 0.0L;
printf("請輸入n的值");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
jiecheng = jiecheng*i;
s = s + (1.0 / jiecheng);
}
printf("結果為%lf", s);
return 0;
}
uj5u.com熱心網友回復:
問題在于jiecheng = jiecheng*i; i=13時就已經溢位了轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/80150.html
標籤:新手樂園
上一篇:請問該截取子串函式為什么不能運行
