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;
}