永发信息网

c语言求n的阶乘 注意n可能很大(n范围不定 不确定数值· ) 阶乘可能会超过整数范围

答案:4  悬赏:50  手机版
解决时间 2021-03-19 21:18
c语言求n的阶乘 注意n可能很大(n范围不定 不确定数值· ) 阶乘可能会超过整数范围
最佳答案
那就只能有数组存储了?
#include
#include
#include
#include
int data[100000];
void main()
{
    int m=6,n,i,j,len,t,temp;
    t = (int)pow(10.0,m*1.0);
    printf("请输入n:");
    scanf("%d",&n);
    len = 1;
    memset(data,0,100000);
    data[1]=1;
    for(i=1;i<=n;i++)
    {
        temp = 0;
        for(j=1;j<=len && i<=n;)
        {   
            data[j]*=i;
            data[j]+=temp;
            if(data[j]>t)
            {
               temp = data[j]/t;
               data[j]%=t;
               j++;
            }
            else 
            {
                temp =0;
                i++;
            }
             
        }
        if(temp) {len++;data[len]=temp;}
 
    }
    for(i=len;i>=1;i--)
        printf("%d",data[i]);
    printf("
");
     


全部回答

/*定义一个数组来存,自己定义相应的乘法运算*、

#include
main()
{
    int n,int result[1000]={0};
    int i=0,j=0;
    int temp_10=0,temp_100=0,temp_1000=0;/*分别存储10、100、1000的进位,最大可计算用单精度或着双精度啊,这样范围就能扩大了
对32位系统,unsigned int 的数据占用4个字节,最大绝对值是42949672995,而13! = 6227020800就超出了范围。
//#include "stdafx.h"//VC++6.0要用这一行
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
char *FactorialLN(int n){
int i,j,k,tmp,len;
char *pa,*pb,*px,s[11]="",*ps9=s+9;
double dec=0;
for(n++,i=2;i len=(int)dec+2;
if(!(pa=(char *)malloc(len)) || !(pb=(char *)malloc(len))){
printf("Application memory failure...");
exit(0);
}
for(i=0;i for(i-=2,j=--n;j;*(pb+i--)=j%10,j/=10);
len--;
i++;
while((k=--n)>1){
for(px=ps9;k;*px--=k%10,k/=10);
for(k=0,tmp=ps9-px;k for(px=ps9,j=len-1;j>=i;*(pa+j-k)+=*(pb+j--) * *(px-k));
for(px=pa-k,j=len-1-k;j>=i-k;j--){
if(*(px+j)>9){
*(px+j-1) += *(px+j)/10;
*(px+j) %= 10;
}
}
if(i) i--;
}
px=pa;
pa=pb;
pb=px;
for(k=0;k }
free(pa);
for(i=0;i return pb;
}
void main(void){
int n;
char *p;
printf("Please enter an integer.\nn=");
scanf("%d",&n);
printf("\n%d! = %s.",n,p=FactorialLN(n));
free(p);
printf("\n");
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我手机为啥用ons模拟器玩游戏总进不去就闪退
“祝我们合作愉快”英语怎么说?
如何禁止run32dll.exe 运行
龙舟里趣小吃(湘韵美食城店)地址在哪,我要去
草鱼怕光吗?白天钓草鱼很好钓。可是晚上用电
女高男矮一起怎么照相好看
尚德博雅的含义
加工工件长1米7,宽1米1,厚14毫米铁板,在单
T145北京到郑州火车票发车问题
商标变更地址,需要提供什么资料
恒玖商行怎么去啊,有知道地址的么
为什么我把所有人不当人都当成傻子,可我却为
WWE现任冠军是谁?
辣翻天麻辣烫地址在哪,我要去那里办事
孩子掉地上摔到头部皮肤红红的可以让她睡觉吗
推荐资讯
想买一款耳机 akg450怎么样 同等价位还有哪些
我想要改名,女的,姓 庄,只要好听,不俗气
专家,2004款奥迪A6,1.8T,10万公里的话,值
耳机插在电脑上应该是哪个颜色插哪个颜色?
.是国内第一个.英语翻译 用什么句型
丽江有什么中药?
小学生二年级德育小故事
为什么生病的时候吃东西觉得没味道哦?
刚买的小米手机,拆封了,支持七天无理由退货
经常扭脚踝会对身体有什么伤害?
4g手机4g卡怎么显示2g网络oppoa59换手机卡却
在一个正常的生殖细胞中,是否含有同源染色体
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?