加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数相乘、相加

发布时间:2020-12-14 02:54:51 所属栏目:大数据 来源:网络整理
导读:char* mult(char *a,char *b,int m,int n){ // 为结果分配内存空间。 char *c = (char*)malloc((m + n + 1) * sizeof(char)); memset(c,(m + n + 1) * sizeof(char)); // 将字符(0 + 0x30 到 9 + 0x30)转换为数字(0到9)进行计算。 for (int i = m - 1,r
char* mult(char *a,char *b,int m,int n)
{
    // 为结果分配内存空间。
    char *c = (char*)malloc((m + n + 1) * sizeof(char));
    memset(c,(m + n + 1) * sizeof(char));

    // 将字符(0 + 0x30 到 9 + 0x30)转换为数字(0到9)进行计算。
    for (int i = m - 1,r = m + n - 1; i >= 0; --i,--r)
    {
        for (int j = n - 1,k = r; j >= 0; --j,--k)
        {
            c[k] += (a[i] - 0x30) * (b[j] - 0x30);
            int tmp = c[k] / 10;
            if (tmp > 1)
            {
                c[k - 1] += tmp;
                c[k] -= tmp * 10;
            }
        }
    }

    // 将由纯数字组成的结果转换为字符串,并去除首部可能还存在的零。
  c[m + n] = '';
    for (int i = 0; i != m + n; ++i)
        c[i] += 0x30;
    if (c[0] == 0x30)
        for (int i = 0;  c[i] != ''; ++i)
            c[i] = c[i + 1];

    // 返回结果所在内存单元的首地址。
    return c;
}
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <cmath>
using namespace std;
// assume m is bigger than n.
char* add(char *a,int n)
{
    // 为结果分配内存空间。
    char *c = (char*)malloc((m + 2)* sizeof(char));
    memset(c,(m + 2) * sizeof(char));
    // 将字符(0 + 0x30 到 9 + 0x30)转换为数字(0到9)进行计算。
    for (int i = m,j = n - 1; j >= 0; --i,--j)
        c[i] += (b[j] - 0x30);
    for (int i = m,j = m - 1; j >= 0; --i,--j)
    {
        c[i] += (a[j] - 0x30);
        if (c[i] > 9)
        {
            c[i - 1] += 1;
            c[i] -= 10;
        }
    }
    // 将由纯数字组成的结果转换为字符串,并去除首部可能还存在的零。    c[m + 1] = '';
    for (int i = 0; i != m + 1; ++i)
        c[i] += 0x30;
    if (c[0] == 0x30)
        for (int i = 0; c[i] != ''; ++i)
            c[i] = c[i + 1];
    // 返回结果所在内存单元的首地址。
    return c;
} 
void main(){
char *a="999",*b="11";
char *p=add(a,b,3,2);
cout<<p<<endl;	
}
	

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读