900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 求1000的阶乘c语言编程 [原创] 1000的阶乘的程序代码 好题大家分享

求1000的阶乘c语言编程 [原创] 1000的阶乘的程序代码 好题大家分享

时间:2024-04-21 08:54:05

相关推荐

求1000的阶乘c语言编程 [原创] 1000的阶乘的程序代码 好题大家分享

我又改了一下,还是不行,结果为0了.怎么回事啊?

#include

#include

void gewei(int *p,int k); /*声明对个位数的相乘的函数*/

void shiwei(int *p,int j); /*声明对十位数的相乘的函数*/

void baiwei(int *p,int i); /*声明对百位数的相乘的函数*/

void jingwei(int *p,int m); /*当相乘的积大于10需要进位时,调用此函数完成进位功能*/

main()

{

int arr[1000]={0,0}; /*定义一个数组,存放结果的每一位数*/

int dyxh,i,j,k;

int e,f,g;

FILE *fp_new;

arr[996]=1; /*将千位数初始化为1*/

for(dyxh=0;dyxh<1000;dyxh++) /*通过三重for循环打印出 arr[1000]的初值。*/

{

printf("%d",arr[dyxh]);

}

printf("\a\n以上输出了arr[1000]的初值!大小为0…01000\n即将执行1000的阶乘!\n按任意键继续!\n");

getchar(); /*程序执行到这里暂停,便于查看分析程序*/

for(i=0;i<10;i++) /*百位上的数从0到9*/

for(j=0;j<10;j++) /*十位上的数从0到9*/

for(k=1;k<10;k++) /*个位上的数从0到9*/

{

for(e=1;e<1000;e++)

{

gewei(&arr[1000-e],k); /*对个位数的相乘的函数*/

}

for(f=2;f<1000;f++)

{

shiwei(&arr[1000-f],j); /*用j乘以十位数并通过进位函数完成进位*/

}

for(g=3;g<1000;g++)

{

baiwei(&arr[1000-g],i); /*用i乘以百位数并通过进位函数完成进位*/

}

}

printf("\n阶乘运算结束!\n按任意键输出arr[1000]的新值!\n");

getchar();

for(dyxh=0;dyxh<1000;dyxh++)

{

printf("%d",arr[dyxh]);

}

printf("\n输出结束!\n");

getchar();

}

void gewei(int *p,int k) /*个位处理函数*****p为arr[999](个位)的地址******k为当前数的个位数*/

{

int m;

m=*p*k;

if(m>9)

{

jingwei(p, m);

return;

}

else

*p=m;

}

void shiwei(int *p,int j) /*十位处理函数****p为arr[998](十位)的地址******k为当前数的十位数*/

{

int m;

m=*p*j;

if(m>9)

{

jingwei(p, m);

return;

}

else

*p=m;

}

void baiwei(int *p,int i) /*百位处理函数****p为arr[997](百位)的地址******k为当前数的个位数*/

{

int m;

m=*p*i;

if(m>9)

{

jingwei(p, m);

}

else

*p=m;

}

void jingwei(int *p,int m) /*进位处理函数******用递归调用完成进位功能*/

{

int a,b,c;

int *pjw;

pjw=p;

a=m%10; /*取得操作位的数*/ /* 进位操作 */

b=m/10; /*取得操作位的上一位的数*/

*pjw=a; /*将操作位上的数填入*/

--pjw; /*移动指针到前一地址*/

c=b+*pjw;

if (c>9)

{

jingwei(pjw,c);

}

else

*pjw=c;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。