您的位置:首页 > 其它

超精读运算之大整数相加

2017-03-27 02:40 183 查看
话不多说,代码贴上。

其中有关把单个字符转换为对应整型数得办法,直接(int)取其ASCLL码值再减去48即可。注意,不能用atoi(str)函数,因为它是直接把一整个字符串转为整型数,而非单个字符,str是个字符数组得首地址。。

#include <bits/stdc++.h>
using namespace std;

void displaySum(  const string &s1 , const string &s2 ,  vector <int> &sum ){
int i=0, j=0;
for( i=s1.size()-1; i>=0; --i)
sum.push_back( (int)s1[ i ] - 48  );// 反序存储
for( i=s2.size()-1, j=0;  i>=0 && j<sum.size() ;  --i,++j )
sum[ j ] += (int)s2[ i ] - 48 ;
while( i>= 0 )
sum.push_back( (int)s2[ i--] - 48 ) ;

for( i=0; i<sum.size(); ++i )
if( sum[ i ]>9 ){
if( i == sum.size()-1 ){
sum.push_back( sum[ i ]/10 ) ;
sum[ i ] %= 10 ;
}
else{
sum[ i+1 ] += sum[ i ]/10 ;
sum[ i ] %= 10 ;
}
}
for( i=sum.size()-1; i>=0; --i )
printf("%d",sum[ i ] ) ;
printf("\n") ;
sum.clear() ;
}
int main(){
string s1, s2 ;
vector <int> sum;
while( cin>>s1>>s2 )
displaySum( s1, s2, sum ) ;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息