C-高精度除法 ╰半夏微凉° 2022-09-30 13:47 124阅读 0赞 直接贴喽 \#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; \}
还没有评论,来说两句吧...