c语言求50阶乘 while,用c语言求阶乘50!的具体数值及其位数并输出结果 爱问知识人...

尽管已有推荐答案,觉得还是为你提供一个代码参考为好。这段代码可以输入系统允许长度的十进制整数,然后输出它的阶乘的位数和阶乘值!你可以在VC 6。0中试试……

#include "stdio。h"

#include "string。

h"

#include "math。h"

#include "stdlib。h"

void main(void){

char *pResult,*pSect,*p,pTemp[12];

int ln,n,i,j,lp,lm,k;

double lDec=0;

printf("请输入阶乘数。

。。

nDec=");

scanf("%d",&n);

ln=n;

while(ln>1) lDec =log10(ln--);//求需要的空间

ln=(int)lDec 1;

if(n==1 || n==0){

printf("%d!长1位。

。。

%d!=1

",n,n);

exit(0);

}

else printf("%d!长%d位。。。

%d!=",n,ln,n);

lp=strlen(ltoa(n,pTemp,10));

if(!(p=(char *)malloc(lm=2*(ln lp) 2))){//申请内存

printf("申请内存失败!

");

exit(0);

}

memset(p,0,lm);

pResult=p 1;

pSect=p ln 2;

strcpy(pSect,pTemp);

for(i=0;i1){

ltoa(n,pTemp,10);

memset(pResult,0,lp);

for(i=0;lp--;i ){ //模拟竖式乘法--n>1

for(j=0;pTemp[j];j )//转为整形求位积存储

pResult[i j] =pSect[i]*(pTemp[j]&15);

k=i j;

for(j=k-1;j>0;j--){

if(pResult[j]>9){

pResult[j-1] =(pResult[j]-pResult[j])/10;

pResult[j]%=10;

}

}

}

i=0;

while(*pResult>9){

pResult--;

*pResult=(pResult[1]-pResult[1])/10;

pResult[1]%=10;

k ;

i ;

}

memcpy(pSect,pResult,k);//将部分积作为被乘数

pResult =i;

lp=k;

}

for(i=0;i

free(p);//释放空间

printf("

");

}。

全部

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值