大数据的乘法实现?C语言
作者:网络转载 发布时间:[ 2016/8/22 9:48:17 ] 推荐标签:C语言 .NET
大数据乘法的算法思路:
输入两个字符串,得到结果,例如:123456789*123456789;
思路:1)首先
123456789*1 = 9 18 27 36 45 54 63 72 81
123456789*2 = 9 18 27 36 45 54 63 72 81
123456789*3 = 9 18 27 36 45 54 63 72 81
123456789*4 = 9 18 27 36 45 54 63 72 81
123456789*5 = 9 18 27 36 45 54 63 72 81
123456789*6 = 9 18 27 36 45 54 63 72 81
依次相乘相加;
2)再进位;
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void big_data_multi (char *pstr1, char *pstr2)
{
int length_str1 = strlen(pstr1);
int length_str2 = strlen(pstr2);
int *pstr3 = (int*)malloc(sizeof(int)*(length_str1+length_str2));
memset(pstr3, 0, sizeof(int)*(length_str1+length_str2));//一定要初始化,否则乱码
for(int i = 0; i < length_str2; i++)//循环累乘相加
{
for(int j = 0; j < length_str1; j++)
{
pstr3[i + j + 1] += (pstr1[j] - '0') * (pstr2[i] - '0');
}
}
for (int i = length_str1 + length_str2 - 1; i >= 0; i--)
{
if(pstr3[i] >= 10)
{
pstr3[i - 1] += pstr3[i] / 10;
pstr3[i] = pstr3[i]%10;
}
}
int i = 0;
while (pstr3[i] == 0)
{
i++;
}
char *pstr4 = (char*)malloc(sizeof(char)*(length_str1 + length_str2 + 1));
int j = 0;
for(; j < length_str1+length_str2 && i < length_str1+length_str2; j++,i++)
{
pstr4[j] = pstr3[i] + '0';
}
pstr4[j] = '';
printf("相乘的结果是:%s
",pstr4);
}
int main()
{
char str1[100] = {0},str2[100] = {0};
while(1)
{
gets(str1);
printf ("str1 = %s
",str1);
gets(str2);
printf ("str2 = %s
",str2);
big_data_multi (str1, str2);
}
system("pause");
}
相关推荐

更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11