杭州电子科技大学(HDU)ACM刷题----------大数相加之1002详解

来源:互联网 发布:软件质量保证范文 编辑:程序博客网 时间:2024/04/27 20:59
#include <iostream>#include <string>using namespace std;string BigNum(string str1,string str2){    //大数相加int i,j;if (str1.size()<str2.size())           //大数相加第一步:将位数最多的定为str1{string t=str2;str2=str1;str1=t;}for (i=str1.size()-1,j=str2.size()-1;i>=0;i--,j--)      //str1.size()-1是因为str1从0开始计数{str1[i]=(str1[i]+(j>=0? str2[j]-'0':0));            //利用问号语句判断位数较短的str2的位数是否达到上限if (str1[i]-'0'>=10){str1[i]=(((str1[i]-'0')%10)+'0');      if (i!=0)               //当i不为0时就执行str1[i-1]语句{str1[i-1]++;    }else{str1='1'+str1;  //最高位若还有进位就加上进位1,此处不能写作str1+='1',string类相加是直接把多个string语句按照写法顺序“嫁接”}}}return str1;}int main(){int n;cin>>n;int flag=1;while (n--){string result;string str1,str2;cin>>str1>>str2;result=BigNum(str1,str2);cout<<"Case "<<flag++<<":"<<endl;cout<<str1<<" + "<<str2<<" = "<<result<<endl;if (n==0){}else{cout<<endl;}}return 0;}

1 0
原创粉丝点击