参考大神博客:https://blog.csdn.net/qq_41993986/article/details/80022796
因为最近在做一道蓝桥杯训练题时碰巧需要用到高精度数作除求余的题,高精度除以低精度整数,这篇代码运算简单,只涉及到了正数之间的运算,有时间再学习高精度除以高精度的算法
#include<stdio.h>
#include<string.h>
/*
高精度除以低精度
*/
//a为被除数,b为除数,c为商,返回值为余数
int Hdividel(char *a,int b,char *c){
int len,i,x=0; //X为每一位数上计算值的余数
len=strlen(a);
int a1[2000];
for(i=0;i<len;i++)
a1[i]=a[i]-48; //转化为int型
for(i=0;i<len;i++){ //逐位计算
c[i]=(x*10+a1[i])/b+48;
x=(x*10+a1[i])%b;
}
while(c[0]=='0'){ //删去前面所有'0'字符
for(i=1;i<=len;i++)
c[i-1]=c[i];
}
return x; //返回余数
}
int main(){
int b,x;
char a[100],c[100];
scanf("%s%d",a,&b);
x=Hdividel(a,b,c);
printf("商:%s 余数:%d",c,x);
return 0;
}