當前位置:首頁 » 編程語言 » c語言1000的階乘
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言1000的階乘

發布時間: 2023-02-26 00:29:15

① 1×2×3×4×……1000用c語言程序

/*高精度階乘*/
#include<stdio.h>

intmain(void)
{
intnum[100000][2]={{1,1}};
intn=0;
intj=0;
scanf("%d",&n);//輸入多少就計算多少的階乘,若超過5000請加大數組的二維部分;

while(n>0)
{
for(j=0;num[j][1]==1;++j)
num[j][0]*=n;

for(j=0;num[j][1]==1;++j)
if(num[j][0]>9)
{
num[j+1][1]=1;
num[j+1][0]+=num[j][0]/10;
num[j][0]%=10;
}

--n;
}

for(j=0;num[j][1]==1;++j);

for(--j;j>=0;--j)
printf("%d",num[j][0]);

putchar(' ');
return0;
}

② 如何用C語言編程計算1000的接乘,精確到個位

/*(在VC++6.0中編譯通過、運行通過)
......................................*/
/*計算1000的階乘,並使輸出結果精確到位*/

#include<stdio.h>
#define N 2570
#define M 4
#define K 1000
/*十進制位整理*/
void dp(char ch[],int b)
{
int f;
for(f=0;!ch[f];f++);
for(;b>=f;b--)
if(ch[b]>9)
{
ch[b-1]+=ch[b]/10;
ch[b]%=10;
}
}
/*十進位的復制與清除*/
void dcyc(char cha[],char chc[])
{
int i;
for(i=0;i<N;i++)cha[i]=chc[i];
for(i=0;i<N;i++)chc[i]=0;
}
/*查找非零首位*/
int hf(char ch[])
{
int f;
for(f=0;!ch[f];f++);
return (f);
}
/*不定位乘法計算*/
void muxx(char cha[],char chc[],char chd[])
{
int ia=N-1,id=M-1,a=hf(chd),b=hf(cha),t2;
for(t2=0;id>=a;id--,t2++)
{
int t;
for(t=ia;t>=b;t--)
chc[t-t2]+=cha[t]*chd[id];
dp(chc,N-1);
}
}

void main()
{
char cha[N]={0},chc[N]={0},chd[M]={0};
int i;
cha[N-1]=1;
chd[M-1]=1;
for(i=2;i<=K;i++)
{
chd[M-1]++;
dp(chd,M-1);
muxx(cha,chc,chd);
dcyc(cha,chc);
}
printf("Result is:\n");
for(i=hf(cha);i<N;i++)printf("%u",cha[i]);
putchar('\n');
getch();
}

運行結果:
Result is:
1239862902
9445909974
1418278094
5573543251
2912073791
0878297308
8932076716
3650241536
0821333186
4516076535
6153071277
8114194545
3408243920
9880051954
5832036786
6848259012
3448259932
8558600301
2188525247
4228458623
5904339901
0164192106
0241866493
1399694290
986355
8633969099
2154399457
8184009699
0277534720
0000000000
0000000000
0000000000
00000000

③ c語言求1到100階乘代碼

1到100?這數夠大的了...

#include<stdio.h>
void main()
{
double j=1;
for(int i=1;i<=50;i++)j*=i;
printf("1到100的階乘是%.0f\n",j);
}

下面用函數的遞歸調用做:
#include<stdio.h>

double fact(int n)/*求階乘的函數*/
{
double j;
if(n>1)j=n*fact(n-1);/*遞歸調用,當n>1時,一直會調用下去,只不過每次參數被減1*/

else
return 1;/*當n被減到1時,返回1,如是會被累積,當n初始為1時直接返回1*/

return j;/*j是當n>1時,最後要的結果*/
}

void main()
{
printf("1到n的階乘是%.0f\n",fact(5));
}