參考大神博客:http://www.javashuo.com/article/p-krsfenul-gn.html
因爲最近在做一道藍橋杯訓練題時碰巧需要用到高精度數作除求餘的題,這是我們學校練題系統的題,有興趣的朋友可以試試高精度除以低精度整數,這篇代碼運算簡單,只涉及到了正數之間的運算,有時間再學習高精度除以高精度的算法
#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; }