不用额外变量实现变量交换 及 大数相加
发布时间: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;
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
