大数加法string

直接拿走用就行

对程序做一些解释。
首先字符类型是以数字在在计算机存储。即字符的ASCII码

char c= '1'+'2';这样可以吗?显然不行。因为1的ASCII码+2才是3。所以应当这样修改
char c ='1'+'2'-'0';
//当然也可以写成这种形式
char c = '1'+2;

大于9的字符为什么要减10,而不是’10’;
原因也是ASCII码,‘11’-10是拿11的ASCII码减去10,然后找到相应的字符就是’1’

所以记住一点,字符运算实际上是ASCII码参与运算,再进行相应的加减操作。

string add(string s1, string s2)
{
    if (s1 == "" && s2 == "")   return "0";
    if (s1 == "")   return s2;
    if (s2 == "")   return s1;
    string maxx = s1, minn = s2;
    if (s1.size() < s2.size()){
        maxx = s2;
        minn = s1;
    }
    int a = maxx.size() - 1, b = minn.size() - 1;
    for (int i = b; i >= 0; --i){
        maxx[a--] += minn[i] - '0'; //  char c='1'+('4'-'0');
    }
    for (int i = maxx.size()-1; i > 0;--i){
        if (maxx[i] > '9'){
            maxx[i] -= 10;// 注意是减10 
            maxx[i - 1]++;
        }
    }
    if (maxx[0] > '9'){
        maxx[0] -= 10;
        maxx = '1' + maxx;
    }
    return maxx;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值