搜索
首页 电脑/网络 程序设计 C/C++

用c语言 求阶乘50!的具体数值及其位数并输出结果

全部回答

2018-04-25

39 0
    尽管已有推荐答案,觉得还是为你提供一个代码参考为好。这段代码可以输入系统允许长度的十进制整数,然后输出它的阶乘的位数和阶乘值!你可以在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(" ");}。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
C/C++
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
程序设计
C/C++
VB
数据库
汇编语言
JAVA相关
VC++
C#/.NET
其他编程语言
C/C++
C/C++
举报
举报原因(必选):
取消确定举报