大整数相加

具体情形还应略作修改

#include <iostream.h>
#include <string>
using namespace std;
char a[1000];
void add(string str1, string str2, char* a)   //str1+str2=a;皆字符串 
{
if(str1.length()<str2.length())
	str1.swap(str2);   //保证str1>=str2 
int len = str1.length();
str2.insert(0,str1.length()-str2.length(),'0'); //两者等长,便于操作,于计算无义 
int i;
int carry = 0;
//两者相加,长度或len或len+1,故先取len 
for(i=0;i<len;i++)
{
	a[len-1-i] = (str1[len-1-i]+str2[len-1-i]-2*'0'+ carry)%10 + '0';
	carry = (str1[len-i-1]+str2[len-1-i]-2*'0'+ carry)/10;
}		
if(carry!=0)//有进位则必是1,打印之 
cout<<'1';
cout<<a<<endl;
}
int main()
{
	string str1,str2;
	str1.clear();
	str2.clear();

	cin>>str1>>str2;
	
   // cout<<str1<<endl<<str2<<endl;
    add(str1,str2,a);
    //cout<<str3<<endl;
	return 0;
}


每天早上叫醒你的不是闹钟,而是心中的梦~
原文地址:https://www.cnblogs.com/vintion/p/4117061.html