C语言 高精度除法

#include <stdio.h>  
#include <string.h>  
  
int len1,len2;  
char s1[905],s2[905];  
int re[905];  
  
void sub()  
{  
    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]--;  
        }  
}  
  
int main()  
{  
    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;  
}   

—————————————————————————————————

本文原创自Sliencecsdn技术博客。

本博客所有原创文章请以链接形式注明出处。

欢迎关注本技术博客,本博客的文章会不定期更新。


大多数人想要改造这个世界,但却罕有人想改造自己。

世上没有绝望的处境,只有对处境绝望的人。

                                              ————By slience

—————————————————————————————————


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值