大数加法

时间:2022-04-22
本文章向大家介绍大数加法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

语法:add(char a[],char b[],char s[]);

参数:

a[]: 被乘数,用字符串表示,位数不限

b[]: 乘数,用字符串表示,位数不限

t[]: 结果,用字符串表示

返回值: null

注意:

  空间复杂度为 o(n^2)

  需要 string.h

源程序:

#include <iostream>
#include <string.h>
using namespace std;
void add(char a[],char b[],char back[])
{
    int i,j,k,up,x,y,z,l;
    char *c;
    if(strlen(a)>strlen(b)) 
        l=strlen(a)+2; 
    else 
        l=strlen(b)+2;
    c=(char *) malloc(l*sizeof(char));
    i=strlen(a)-1;
    j=strlen(b)-1;
    k=0;up=0;
    while(i>=0||j>=0)
        {
            if(i<0) 
                x='0'; 
            else 
                x=a[i];

            if(j<0) 
                y='0'; 
            else 
                y=b[j];

            z=x-'0'+y-'0';

            if(up) 
                z+=1;
            if(z>9) 
            {
                up=1;
                z%=10;
            } 
            else 
                up=0;
            c[k++]=z+'0';
            i--;
            j--;
        }
    if(up) 
        c[k++]='1';
    i=0;
    c[k]='';
    for(k-=1;k>=0;k--)
        back[i++]=c[k];
    back[i]='';
} 
void add(char a[],char b[],char back[]);
int main()
{
    char a[100];
    char b[100];
    char back[100];
    cout<<"请输入两个大数:"<<endl;
    cin>>a>>b;
    add(a,b,back);

    cout<<"大数相加结果是:"<<back<<endl;
    return 0;
}