問題 D: C語言習題 a!+b!+c!
題目描述
求a!+b!+c!的值,用一個函數fac(n)求n!。a,b,c的值由主函數輸入,最終得到的值在主函數中輸出。
輸入
a,b,c的值
輸出
a!+b!+c!的值
#include <iostream>
using namespace std;
int main()
{
int fac(int);
int a,b,c,sum;
cin>>a>>b>>c;
sum=fac(a)+fac(b)+fac(c);
cout<<sum<<endl;
return 0;
}
int fac(int n)
{
int s=1;
for(int i=1;i<=n;i++)
s=s*i;
return s;
}
階乘就是累乘,三個階乘相加,我們可以自定義求階乘的函數,加法在主函數中體現;
先定義一個整型函數(int fac(int n)),因爲求的是乘法,所以變量定義爲1(int s=1;),從一開始直到所需數據(for(int i=1;i<=n;i++)),依次相乘(s=s*i;);
因爲主函數在前,所以調用自定義函數(int fac(int);)!
注:自定義函數還可以用遞歸的方法,例如
#include <iostream>
using namespace std;
int main()
{
int fac(int);
int a,b,c,sum;
cin>>a>>b>>c;
sum=fac(a)+fac(b)+fac(c);
cout<<sum<<endl;
return 0;
}
int fac(int n)
{
if(n==1) return 1;
else return n*fac(n-1);
}
或
#include <iostream>
using namespace std;
int main()
{
int fac(int);
int a,b,c,sum;
cin>>a>>b>>c;
sum=fac(a)+fac(b)+fac(c);
cout<<sum<<endl;
return 0;
}
int fac(int n)
{
int s;
if(n==1) s=1;
else s=n*fac(n-1);
return s;
}