阶乘程序修改以下程序是对50的阶乘的程序的一种修改!说明程序经过修改后,能够计算出更大的数的阶乘!而修改程序的部分,只需要稍微修改一个地方,程序的主体是没有太多的变化的!说明程序的通用性还是比较高的!//经粗略计算,知100的阶乘不会超过200位,所以用200代!#include<>#defineN200voidfun(int);intmain(){inti;//intn;//以下三行是计算输入一个数的阶乘//printf("inputthenumber:");//scanf("%d",&n);for(i=1;i<=100;i++)fun(i);//此循环是通过调用函数,计算1到100的阶乘return0;}voidfun(intn){inta[N]={1};//初始化数组,将第一个初始化为1,其余为0inti,j,m,b=0,t;for(i=2;i<=n;i++)//用循环实现阶乘的累乘{t=2*i;for(j=0;j<t;j++)//为了减少计算,并且准确,将循环条件设为3*i,即t{m=a[j]*i+b;//用一个数去乘数组的一个元素,得到的结果加上上次剩余的数ba[j]=m%10;//取个位保存到当前位置b=m/10;//去掉个位,保留余下的部分,作为下次累加}//以上三行是算法的核心}for(i=N-1;i>0;i--)if(a[i]!=0)break;//从后面往前面查找,直到第一个不为零的数printf("%d!=",n);for(j=i;j>=0;j--)//对数组元素进行逆序输出,因为存放的时候是从小位到高位printf("%d",a[j]);printf("\n");}运行结果:1!=12!=23!=64!=245!=1206!=7207!=50408!=403209!=36288010!=362880011!=3991680012!=47900160013!=622702080014!=87**********!=0016!=2092278988800017!=18!=019!=20!=021!=0022!=000023!=4000024!=36000025!=8400000026!=58400000027!=6076800000028!=50150400000029!=454361600000030!=31!=032!=33!=034!=00035!=0000036!=00000037!=0000000038!=20000000039!=5680000000040!=27200000000041!=65042!=043!=0044!=045!=00046!=000047!=00000048!=0000000049!=00000000050!=0000000000051!=200000000000052!=2400000000000053!=054!=55!=0056!=00057!=0000058!=000000059!=00000000060!=000000000061!=00000000000062!=0000000000000063!=360000000000000064!=23065!=497066!=14867!=3690068!=571000069!=75400000070!=8270000000071!=37800000000072!=8720000000000073!=406000000000000074!=70075!=7750076!=349077!=34900078!=2520000079!=69300000080!=5540000000081!=969000000000082!=73400000000000083!=6290000000000000084!=129085!=15986!=4970087!=572000088!=**********!=3430000000090!=309000000000091!=77100000000000092!=1090000000000000093!=712094!=86995!=8750096!=80900097!=1240000098!=002000000099!=932000000000100!=93000000000000Processreturned0(0x0)executiontime:.//稍微做了一下修改,1000的阶乘也算出来了,共2568位,后面有249个0!^-^#include<>//经调整得到,1000的阶乘有2568位,为了方便书写,设置为3000#defineN3000voidfun(int);intmain(){fun(10
阶乘程序修改(100以内的阶乘及1000的阶乘) 来自淘豆网m.daumloan.com转载请标明出处.