編寫程序,輸入一個正整數(shù)n,求下列算式的值。要求定義和調(diào)用函數(shù)fact(k)計算k的階乘,函數(shù)返回值的類型是double。1+1/2+ .... +1/n!輸出保留5位小數(shù)。#include<stdio.h>#include<math.h>int main(){double x,n,k=1,sum;scanf("%lf",&n);while(k<=n){x=fact(k);sum=sum+1/x;k++;}printf("sum=%.5f",sum);return 0;}
2 回答

猛跑小豬
TA貢獻(xiàn)1858條經(jīng)驗 獲得超8個贊
fact是用戶自定義函數(shù),不包含在<math.h>頭文件里,需要自己定義啊
程序這樣寫 #include double fact(int k) { double sum=0; double x=1; while(x<=k) { sum=sum+1/x; x++; } return sum; } int main() { int n; printf("請輸入一個正整數(shù):\n"); while(1) { scanf("%d",&n); if(n<1) { printf("請輸入正確的數(shù)!\n"); } else { break; } } printf("sum=%.5lf\n",fact(n)); return 0; }

呼如林
TA貢獻(xiàn)1798條經(jīng)驗 獲得超3個贊
你還沒有定義FACT函數(shù)吧
fact是函數(shù)庫外的,要定義
#include double fact(int n); int main() { int i,k; double sum=0; printf("please input a integer number :");//最好加上這句,不然其他人不知道你想人家干什么 scanf("%d",&k); for(i=1;i<=k;i++) { sum+=fact(i); } printf("sum is %.5f\n",sum); return 0; } double fact(int n) { if(n==0||n==1)//當(dāng)n=0或n=1時,n!=0 return 1; else return 1.0/n*fact(n-1); } 本程序已用Microsoft visual c++6.0檢測過
- 2 回答
- 0 關(guān)注
- 163 瀏覽
添加回答
舉報
0/150
提交
取消