C语言 大数相乘法
发布时间:2020-12-14 02:34:43 所属栏目:大数据 来源:网络整理
导读:#define _CRT_SECURE_NO_WARNINGS #include stdio.h #includestdlib.h #include string.h #include memory.h void largeMul(char *numX,char *numY,char *result) { int size1 = strlen(numX);//求乘数的长度 int size2 = strlen(numY);//求被乘数长度 int t
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h> #include<stdlib.h> #include <string.h> #include <memory.h> void largeMul(char *numX,char *numY,char *result) { int size1 = strlen(numX);//求乘数的长度 if (numY[i] - '0' == 0){ continue; }memset(tmp,2048);//清空保存中间结果int m = 0;//位数移动,乘法int ?r,r2;//临时变量保存结果for (int j = size1 - 1; j >= 0;j--,m++){ //m+n代表位数r = (numX[j] - '0')*(numY[i] - '0');//每一位相乘的结果r2 = tmp[m + n] + r;//累加tmp[m + n] = r2 % 10;//余数tmp[m + n + 1] = r2 / 10;//进位 +1进位 } r = result[t] + tmp[t] + r2;//累加result[t] = r % 10;//取个位r2 = r / 10;//进位 ? ? ? ? ? ? ?}
if (result[i])//数字前不是0的情况下{ for (int j = 0; j <= i / 2; j++)//数字对调{ char temp = result[j] + 48;result[j] = result[i - j] + 48;result[i - j] = temp;//交换 }return;//交换完成直接退出 } }} int main() { char str1[1024] = { 0 }; char str2[1024] = { 0 }; scanf("%s%s",str1,str2); char result[2048] = { 0 }; largeMul(str1,str2,result);//调用函数计算 printf("%s * %s = %s",result); printf("n"); system("pause"); return 0;} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |