zoukankan      html  css  js  c++  java
  • 大数据乘法

    一:代码实现

    //大数据乘法运算
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int BigDataMul(char *num01, char *num02)
    {
    	int res = 0, i = 0, j = 0;
    	int length01 = 0, length02 = 0, totallength = 0;
    	if(NULL == num01 || NULL == num02) {
    		res = -1;
    		return res;
    	}
    	length01 = strlen(num01);
    	length02 = strlen(num02);
    	totallength = length01 + length02;
    	int *presult = (int *)malloc(sizeof(int) * totallength);
    	memset(presult, 0, sizeof(int) * totallength);
    	if(NULL == presult) {
    		res = -2;
    		return res;
    	}
    	//累乘
    	for(i = 0; i < length01; i++)	{
    		for(j = 0; j < length02; j++) {
    			//将第一位空出来,以防产生进位,注意这个第0位置,表示最高位
    			presult[i + j + 1] += (num01[i] - '0') * (num02[j] - '0');
    		}
    	}
    	//累加 倒序
    	for(i = totallength - 1; i >= 0; i--) {
    		//大于10 表示产生进位
    		if(presult[i] >= 10) {
    			presult[i-1] += presult[i] / 10;//取出进位
    			presult[i] %= 10;//取出个位数
    		}
    	}
    	i = 0;
    	//去除前面的0,因为可能没有产生进位,前面的可能是0
    	while(0 == presult[i]) {
    		i++;
    	}
    	//可能与0相乘的话,结果全为0
    	if(i == totallength + 1) {
    		printf("0
    ");
    		goto IsZero;
    	}
    	char *plastresult = (char *)malloc(sizeof(char) * totallength);
    	memset(plastresult, 0, sizeof(char) * totallength);
    	if(NULL == plastresult) {
    		res = -2;
    		return res;
    	}
    	for(j = 0; i < totallength; i++, j++) {
    		plastresult[j]	= presult[i] + '0';
    	}
    	for(i = 0; i < totallength; i++) {
    		printf("%c",plastresult[i]);
    	}
    	free(plastresult);
    	plastresult = NULL;
    IsZero:
    	free(presult);
    	presult = NULL;
    	return res;
    }
    
    int main(int argc, char *argv[])
    {
    	BigDataMul("22222","9");
    	return 0;
    }
    

      

      

  • 相关阅读:
    day28 粘包, 合法性连接
    day27 网络通信协议, tcp和udp, 缓冲区, subprocess
    day 26 C/S架构, 网络通信流程, 初识socket
    day25 包语法
    Python9-From-CSS-day48
    Python9-前端基础知识-day47
    Python9-MySQL-MySQL-ORM框架-day48
    Python9-MySQL-MySQL存储过程-视图-触发器-函数-day45
    Python9-MySQL-pymysql模块-day44
    Python9-MySQL-Homework-day43
  • 原文地址:https://www.cnblogs.com/L-Lune/p/4693784.html
Copyright © 2011-2022 走看看