思路:
分小数部分和整数部分处理,长度不同的部分增加‘0’处理。
注意字符串这两种运算:
a+='0' //0加到a的后面
a='0'+a //0加到a的前面
代码:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main(){
string a,b;
while(getline(cin,a)&&getline(cin,b)){
int dot1,dot2,l1=a.length(),l2=b.length();
for(int i=0;i<l1;i++)
if(a[i]=='.'){
dot1=i;
break;
}
for(int i=0;i<l2;i++)
if(b[i]=='.'){
dot2=i;
break;
}
string c1=a.substr(dot1+1);
string c2=b.substr(dot2+1);
string d1=a.substr(0,dot1);
string d2=b.substr(0,dot2);
// cout<<c1<<"\n"<<c2<<endl;
int add=0;
int l3=c1.length(),l4=c2.length();
if(l4>l3){
string temp=c1;
c1=c2;
c2=temp;
l3=c1.length();
l4=c2.length();
}
for(int i=0;i<l3-l4;i++)
c2+='0';
// cout<<c1<<"\n"<<c2<<endl;
int t;
for(int i=l3-1;i>=0;i--){
t=c1[i]-'0'+c2[i]-'0'+add;
c1[i]=t%10+'0';
add=t/10;
}
// cout<<c1<<"\n"<<c2<<endl;
// cout<<endl;
int l5=d1.length(),l6=d2.length();
if(l6>l5){
string temp=d1;
d1=d2;
d2=temp;
l5=d1.length();
l6=d2.length();
}
for(int i=0;i<l5-l6;i++)
d2='0'+d2;
for(int i=l5-1;i>=0;i--){
t=d1[i]-'0'+d2[i]-'0'+add;
d1[i]=t%10+'0';
add=t/10;
}
if(add)
d1='0'+d1;
cout<<d1<<"."<<c1<<endl;
}
}