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