C-高精度除法

直接贴喽

#include<stdio.h>   

#include<string.h>   

intlen1,len2;   

chars1[905],s2[905];   

intre[905];   

voidsub()   

{   

    int i=0,j;   

    while(1)   

    {   

        if(s1[i]=='0')  i++;   

        else   

        {   

            j=i;   

            break;   

        }   

    }   

    for(;i<len2;i++)   

        s1[i]=s1[i]-s2[i]+'0';   

    for(i=len2-1;i>j;i--)            //低位开始检测是否小于0   

        if(s1[i]<'0')   

        {   

            s1[i]+=10;   

            s1[i-1]--;   

        }   

}   

   

intmain()   

{   

    int i,p;   

    scanf("%s%s",s1,s2);    

    len1=strlen(s1);   

    len2=strlen(s2);   

    if(len1<len2 || (len1==len2 &&strncmp(s1,s2,len2)<0))   //如果a<b,直接输出0   

        printf("0\n");    

    p=0;   

    while(1)   

    {   

        re[p]=0;   

        while(strncmp(s1,s2,len2)>=0)      //一直进行减法,直到不能减为止   

        {   

            sub();   

            re[p]++;   

        }   

        p++;   

        if(len1==len2)  break;   

        for(i=len2-1;i>=0;i--)             //在s2前面补0,以便进行减法运算   

            s2[i+1]=s2[i];    

        s2[0]='0';   

        len2++;   

        s2[len2]='\0';   

    }   

    i=0;   

    while(1)   

    {   

        if(re[i]==0)    i++;   

        else            break;   

    }   

    for(;i<p;i++)   

        printf("%d",re[i]);   

    return 0;   

}     

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值