基本数据类型 长度有限。所以大的数据被单独拿出来。
高精度算法就是模拟我们在纸上的运算。
我擦,跟百度上30行的代码比较,我的80行就是狗屎。。。。。
要死要死要死
我忘记了。。。。一个空间有剩余的int[]后面是自带补0的啊。。。。。。
还有平时没有注意到的三目运算符
length=(str1>str2)?str1:str2;
上代码
#include <iostream>
#include <cstring>
#define MAX 1001
using namespace std;
int main(void)
{
int arr1[MAX]={0},arr2[MAX]={0};
int length,i,length1,length2,t,dv = 0;
char str[MAX];
/*读入数据,并进行预处理(计算出数字位数,并方向存放)*/
cin>>str;
length1 = strlen(str);
for(i=0; i<length1; ++i)
arr1[i] = str[length1-1-i] - '0';
cin>>str;
length2 = strlen(str);
for(i=0; i<length2; ++i)
arr2[i] = str[length2-1-i] - '0';
length = (length1>length2)?length1:length2;
/*算法核心内容*/
for(i=0; i<length; ++i)
{
t = arr1[i] + arr2[i] +dv;
arr1[i] = t % 10;
dv = t / 10;
}
if(dv != 0) arr1[length++] = dv;
/*结束*/
for(i=0; i<length; ++i)
cout<<arr1[length-1-i];
return 0;
}