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

不用额外变量实现变量交换 及 大数相加

发布时间:2020-12-14 04:12:59 所属栏目:大数据 来源:网络整理
导读:1)不用额外变量实现变量交换 int a=1; int b=2; a=a+b; b=a-b; ? ?//此时a变量值为3 a=a-b; ? //此时a变量值仍为3,b变量为1 问题:若a和b都很大的时候,会有溢出的可能。 2)大数相加(copy的一段代码) std::string stringAdd( const std::string strLeft

1)不用额外变量实现变量交换

int a=1;

int b=2;

a=a+b;

b=a-b; ? ?//此时a变量值为3

a=a-b; ? //此时a变量值仍为3,b变量为1


问题:若a和b都很大的时候,会有溢出的可能。


2)大数相加(copy的一段代码)

std::string stringAdd( const std::string& strLeft,const std::string& strRight )  
{  
    //结果最长为较长数字加1   
    int nLeftLength = strLeft.length();  
    int nRigthLength = strRight.length();  
    int nLargeLength = nLeftLength >= nRigthLength ? nLeftLength : nRigthLength;  
    std::string strResult( nLargeLength+1,'0' );  
    int nCount = 0;  
    while( nLargeLength )  
    {  
        char nTempLeft;  
        if( nLeftLength )  
        {  
            nTempLeft = strLeft[--nLeftLength];  
        }  
        else  
        {  
            nTempLeft = '0';  
        }  
        cout << "tempLeft:" << nTempLeft << std::endl;  
        char nTempRigth;  
        if( nRigthLength )  
        {  
            nTempRigth = strRight[--nRigthLength];  
        }  
        else  
        {  
            nTempRigth = '0';  
        }  
        cout << "tempRight:" << nTempRigth << std::endl;  
        //计算当前位的值   
        int nTemp = nTempLeft-'0' + nTempRigth-'0' + strResult[nLargeLength]-'0';  
        cout << "temp:" << nTemp << std::endl;  
        strResult[nLargeLength] = (nTemp%10)+'0';  
        cout << "nLargeLength:" << nLargeLength << std::endl;  
        //如果超过了10则应进1   
        if( nTemp >= 10 )  
        {  
            strResult[nLargeLength-1] = 1+'0';  
        }  
        nLargeLength--;  
    }  
    return strResult;  
}  

(编辑:李大同)

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

    推荐文章
      热点阅读