使用字符串完成大数的加减运算

这里的大数指的是远超long long int的数。

#include
#include
#include 
using namespace std;
#define base 10

//去掉正数前面的0
string deZero(string s)
{
    long int i;
    for(i=0;i48){
            break;
        }
    }
    if(i==s.length())
        return "0";
    s.erase(0,i);
    return s;
}

//使用string完成大数加法
string bigNumAdd(string str1,string str2)
{
    int tmp;
    string strSum;
    str1=deZero(str1);
    str2=deZero(str2);
    long int len1=str1.size();//size()函数返回的是字符串去掉结尾标志"\0"后的长度
    long int len2=str2.size();
    int bit=0;
    while(len1 && len2){
        tmp=str1[len1-1]-'0'+str2[len2-1]-'0'+bit; //str1[len1-1]-'0'由字符数字转数字
        bit=tmp/10;
        tmp%=10;
        strSum+=tmp+'0';
        --len1;
        --len2;
    }
    while(len1){
        tmp=str1[len1-1]-'0'+bit;
        bit=tmp/base;
        tmp%=base;
        strSum+=tmp+'0';
        --len1;
    }
    while(len2){
        tmp=str2[len2-1]-'0'+bit;
        bit=tmp/10;
        tmp%=10;
        strSum+=tmp+'0';
        --len2;
    }
    if(bit){
        strSum+=bit+'0';
    }
    reverse(strSum.begin(),strSum.end());
    return strSum;
}

//判断两个正数的大小
int judge(string str1,string str2)
{
    if(str1.length()>str2.length())
        return 1;
    if(str1.length()str2.at(i))
            return 1;
        if(str1.at(i)

你可能感兴趣的:(使用字符串完成大数的加减运算)