电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

部分高精度算法c语言

部分高精度算法c语言_第1页
1/18
部分高精度算法c语言_第2页
2/18
部分高精度算法c语言_第3页
3/18
下载后可任意编辑部分高精度算法② 高精度除以低精度; 算法:根据从高位到低位的顺序,逐位相除。在除到第 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 = 0; i < ka; i++) a[i] = a1[ka-i-1] - '0'; for(i = 0; i < kb; i++) b[i] = b1[kb-i-1] - '0'; 下载后可任意编辑 for(i = 0; i < ka; i++) for(j = 0; j < kb; j++) { c[i + j] = c[i + j] + a[i] * b[j]; c[i + j +1] = c[i + j +1] + c[i + j]/10; c[i + j] = c[i + j] % 10; } if(!c[k]) k--; for(i = k-1; i >= 0; i--) printf("%d", c[i]); } ④ 高精度除以高精度(要求用尽可能少的存储单元); 算法:用计算机模拟手算除法,把除法试商转化为连减。 #include #define N 500 int bj(int a[], int b[], int k1, int k2) /*比较大小函数*/ { int i, t, flag; /*flag 作标志位*/ if(k1 < k2) flag = 0; /*被除数小于除数返回 0*/ else if(k1 > k2) flag = 1; /*被除数大于除数返回 1*/ else { /*被除数和除数位数相等则逐位进行比较*/ i = k1; t = 0; while(t == 0 &&...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

部分高精度算法c语言

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部