思路:定義一個(gè)函數(shù)fun(n)求n的階乘,接著鍵盤輸入一個(gè)整數(shù),調(diào)用fun函數(shù)輸出該數(shù)的階乘。
創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、石阡網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、商城開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為石阡等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
參考代碼:
#include"stdio.h"?
long?fun(int?n){
long?sum?=1;
int?i;
for(i=2;i=n;i++)
sum*=i;
return?sum;
}
int?main()
{
int?n;?
scanf("%d",n);
printf("%ld",fun(n));
return?0;
}
/*
運(yùn)行結(jié)果:
10
3628800
*/
#include stdio.h
int main()
{
int a=100;
double num=1.0;
//while 循環(huán)相乘實(shí)現(xiàn)階乘
while(a0)
{ num *= a;
a--;
}
printf("100!的結(jié)果:%le\n",num);
//for循環(huán)相乘實(shí)現(xiàn)階乘
num=1;
for(a=1;a=100;a++)
{ num *= a;}
printf("100!的結(jié)果:%le\n",num);
return 0;
}
這個(gè)有點(diǎn)麻煩了. 跟普通的法子不大一樣.
你要用數(shù)組來模擬運(yùn)算.
我這邊有一個(gè)大整數(shù)階乘的程序,你試試看可能看懂!
不行就百度去,大整數(shù)階乘做關(guān)鍵字,很多的.
#include "stdio.h"
#include "stdlib.h"
#include "memory.h"
#include "math.h"
#include "malloc.h"
void calcFac(int n)
{
int i,j,head,tail;
int blkLen=(int)(n*log10((n+1)/2)); //計(jì)算n!有數(shù)數(shù)字的個(gè)數(shù)
blkLen+=4; //保險(xiǎn)起見,多加4位
if (n1)
{
printf("%ld!=0\n",n);
return;
}
char *arr=(char *)malloc(blkLen);
if (arr==NULL)return ;
memset(arr,0,sizeof(char)*blkLen);
head=tail=blkLen-1;
arr[tail]=1;
for (i=2; i=n; i++)
{
int c=0;
for (j=tail; j=head; j--)
{
int prod=arr[j] * i +c;
arr[j]=(char)( prod % 10);
c= prod / 10;
}
while (c0)
{
head--;
arr[head]=(char)(c % 10);
c/=10;
}
}
for (i=head; i=tail; i++)
printf("%c",arr[i]+'0');
printf("\n");
free(arr);
}
int testCalcFac()
{
int n;
while ( scanf("%d",n)!=EOF)
{
if (n==0)
return -1;
calcFac(n);
}
}
int main(int argc, char* argv[])
{
testCalcFac();
return 0;
}
#includeiostream
#includevector
#includestring
#includealgorithm
using namespace std;
string add(const string a,const string b);
string multiply(const string a,char b);
string multi(const string a,const string b);
string factorial(int n);
int main()
{
coutfactorial(15);
return 0;
}
string add(const string a,const string b)
{
string sh,lo,r; int g=0;
if(a.size()b.size())
{
sh=string(a.size()-b.size(),'0');
sh+=b; lo=a;
}
else
{
sh=string(b.size()-a.size(),'0');
sh+=a; lo=b;
}
r.resize(sh.size());
for(int i=sh.size()-1;i=0;--i)
{
r[i]=sh[i]+lo[i]-48+g;
if(r[i]'9')
{
r[i]-=10;
g=1;
}
else
{
g=0;
}
}
if(g==1)
r="1"+r;
return r;
}
string multiply(const string a,char b)
{
string r;
r.resize(a.size()); int g=0;
if(b=='0')
return "0";
if(b=='1') //加快計(jì)算
return a;
for(int i=a.size()-1;i=0;--i)
{
r[i]=(a[i]-48)*(b-48)%10+48+g;
if(r[i]'9')
{
r[i]-=10;
g=((a[i]-48)*(b-48))/10+1;
continue;
}
g=((a[i]-48)*(b-48))/10;
}
if(g!=0)
r.insert(0,string(1,g+48));
return r;
}
string multi(const string a,const string b)
{
string r("0");
string *c=new string[b.size()];
for(int i=0;ib.size();++i)
{
c[i]=multiply(a,b[b.size()-1-i])+string(i,'0');
r=add(r,c[i]);
}
delete[] c;
return r;
}
string factorial(int n)
{
char b[7];
string r="1";
for(int i=1;in+1;++i)
{
itoa(i,b,10);
r=multi(r,b);
}
return r;
}
本文名稱:c語言用函數(shù)15的階乘 c語言1到5的階乘
網(wǎng)站URL:http://jinyejixie.com/article18/dddhggp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站營銷、域名注冊(cè)、網(wǎng)頁設(shè)計(jì)公司、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)