『壹』 編寫一個c++程序:計算1到15的階乘
#include<iostream>
usingnamespace升埋和std;
__int64fac(intn){
if(n==0||n==1)
return1;
returnn*fac(n-1);
}
intmain(){
inti;
for(i=1;i<吵盯=15;i++){
cout<<i<<"!="<<fac(i)<<endl;
液枝}
return0;
}
『貳』 編程計算15的階乘
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
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()
{
cout<<factorial(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') //和租如加快型老計算
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;i<b.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;i<n+1;++i)
{
itoa(i,b,10);
r=multi(r,b);
}
return r;
}
『叄』 怎麼在c語言中計算1到5的階乘
先定義一個變數sum作為結果的記錄,然後用一個循環 從1循環到5 依次乘起來。
代碼如下
#include<stdio.h>
int main()
{
int sum = 1;//因為是乘法 定義為1比較方便,如果加法,大多數定義為0
for (int i = 1; i<5; i++)
{
sum *= i; //意思是sum=sum*i;
}
printf ("%d",sum) ;
return 0;
}
『肆』 用C語言列印1到5的階乘值。
正確:#include<stdio.h>
int fac(int n)
{
static int f=1;
f=f*n;
return(f);
}
void main()
{
int i;
for(i=1;i<=5;i++)
printf("%d!=%d ",i,fac(i));
}
所謂遞歸是不斷的調用自己,本身函數設為fac(int n),f=f*n,
如果改成f=fac(n-1)*n,就不是遞歸了,應為你調用的不是本身。
(4)c語言輸出15的階乘多種方法擴展閱讀:
c語言塌慶仔中階乘的精確值
對於差檔大數的操作,可能超出int,甚至long的表示範圍,對此,可以使用數組來存儲大數,下列代
碼為求1000以內數的階乘的代碼,代碼如下:
#include <stdio.h>#include<string.h>const int max=3000;int main()
{ int f[3000];//存放最終的結果
int i,j,n,c,tem;
memset(f,0,sizeof(f));
scanf("%d",&n);
f[0]=1; for(i=2;i<團汪=n;i++)
{
c=0; for(j=0;j<max;j++)
{ tem=i*f[j]+c; c=tem/10; f[j]=tem%10; } } for(j=max-1;j>=0;j--) if(f[j]!=0) break; for(i=j;i>=0;i--) printf("%d",f[i]); printf(" "); return 0;
『伍』 用c語言寫的一個求階乘的程序,最大智能求15的階乘,該怎麼改擴大范圍,求大俠來幫忙
這個有點麻煩了. 跟普通的法子不大一樣.
你要用數組來模擬運算.
我這邊有一個大整數階乘的程序,你試試看可能看懂!
不行就網路嫌森去,大整數階乘做關鍵字,很多的.
#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)); //計算n!有數數字的個數
blkLen+=4; //保險起見,多加4位
if (n<1)
{
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 (c>0)
{
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;
}
『陸』 c語言中 用while語實現程序階乘15!
#include <遲和stdio.h>
int main()
{
int a=100;
double num=1.0;
/碼輪盯/while 循環相乘實現階乘
while(a>0)
{ num *= a;
a--;
}
printf("100!的結果:%le\n",num);
//for循環相乘實現階乘
num=1;
for(a=1;a<=100;a++)
{ num *= a;}
printf("桐答100!的結果:%le\n",num);
return 0;
}
『柒』 如何用c語言分別輸出1到5的階乘,並且輸出它們的和
#include<stdio.h>
intjc(intn);//計算n的階乘
intmain()
{
intn,jcn,sum=0;
for(n=1;n<=5;n++)
{
jcn=jc(n);
printf("%d的階乘為:%d
",n,jcn);
sum=sum+jcn;
}
printf("總和為:%d
",sum);
return0;
}
intjc(intn)//計算n的階乘
{
inti,r=1;
for(i=1;i<=n;i++)
{
r=r*i;
}
returnr;
}
『捌』 C++15的階乘
數據的定義時要指定大小不能使用變數,早凱野所以
double f[size];這句話有問題,要麼陸喊改為double f[16],或者改為const int size = 16;
同時第二個for循環中要定義int,改孫睜成這樣for (int i=0;i<size;i++)
『玖』 輸入一個15以內的整數,求階乘的 c語言源代碼
思路:尺或定義一個函數fun(n)求n的階乘,接著鍵盤輸入一個豎明整數,調用fun函數輸出該數的階乘。
參考代碼:
#include"stdio.h"
longfun(intn){
longsum=1;
inti;
for(i=2;i<=n;i++)
sum*=i;
returnsum;
}
intmain()
{
intn;
scanf("%d",&n);
printf("%ld",fun(n));
return0;
}
/*
運行結余困告果:
10
3628800
*/