当前位置:首页 » 编程语言 » 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));
}