下载后可任意编辑部分高精度算法② 高精度除以低精度; 算法:根据从高位到低位的顺序,逐位相除
在除到第 j 位时,该位在接受了来自第 j+1 位的余数后与除数相除,假如最高位为零,则商的长度减一
源程序如下: #include #define N 500 main() { int a[N] = {0}, c[N] = {0}; int i, k, d, b; char a1[N]; printf("Input 除数:"); scanf("%d", &b); printf("Input 被除数:"); scanf("%s", a1); k = strlen(a1); for(i = 0; i < k; i++) a[i] = a1[k - i - 1] - '0'; d = 0; for(i = k - 1; i >= 0 ; i--) { d = d * 10 + a[i]; c[i] = d / b; d = d % b; } while(c[k - 1] == 0 && k > 1) k--; printf("商="); for(i = k - 1; i >= 0; i--) printf("%d", c[i]); printf("\n 余数=%d", d); } ③ 高精度乘以高精度(要求用尽可能少的存储单元); 算法:用数组保存两个高精度数,然后逐位相乘,注意考虑进位和总位数
源程序如下: #include main() { int a[240] = {0}, b[240] = {0}, c[480] = {0}; int i, j, ka, kb, k; char a1[240], b1[240]; gets(a1); ka = strlen(a1); gets(b1); kb = strlen(b1); k = ka + kb; for(i