#include<iostream> #include<string> using namespace std; string add(string bigNum1,string bigNum2,int sizeDif) //两大数相加 { int staff=0; //进位 string sumNum; //相加后的字符串 for(int i=bigNum1.length()-1;i>=sizeDif;i--) //大数都具有的共同位相加 { sumNum=sumNum+(char)((bigNum1[i]-48+bigNum2[i-sizeDif]-48+staff)%10+48); staff=(bigNum1[i]+bigNum2[i-sizeDif]+staff-96)/10; } for(i=sizeDif-1;i>=0;i--) //大数中有位差的位的相加 { sumNum=sumNum+(char)((bigNum1[i]-48+staff)%10+48); staff=(bigNum1[i]+staff-48)/10; } if(1==staff) //最高位进位 { sumNum=sumNum+'1'; } return sumNum; } int main() { string bigNum1; string bigNum2; string sumNum; //相加后的字符串 cout<<"please input two big numbers:"<<endl; cin>>bigNum1>>bigNum2; int sizeDif=bigNum1.length()-bigNum2.length(); //两大数的位差 if(sizeDif>=0) //大数1的位数不少于大数2 { sumNum=add(bigNum1,bigNum2,sizeDif); } else //大数2的位数多于大数1 { sizeDif=-sizeDif; sumNum=add(bigNum2,bigNum1,sizeDif); } cout<<"the sum of the two big number is:"<<endl; //输出相加结果 for(int i=sumNum.length()-1;i>=0;i--) { cout<<sumNum[i]; } cout<<endl; return 0; }