关于高精度运算

##高精度是一种很巧妙的方法呀。
大体思路是,将两个很大的整数分别存放于char数组a,b中,分别计算数组长度。再将对应的位数转化为整形相加,如‘2’-‘0’得到2,因为数字字符的阿斯克吗是连续的。个位和个位相加存入另一个int类型的数组中,最后得到一个每个元素都可能比10大的数,最后进位求解。。由于不确定哪个数组比较长(对应的正数更大位数更多),如果单纯地对应相加可能就是千位和个位相加,所以相加就会很麻烦,因为相加进位必须是相同位数相加,但是在上面的代码中我也用了较为繁琐的代码实现了这一问题(尽管其中有些许bug)。
但是只要存入字符数组时以个位,十位,百位这样的顺序放入求解过程就会方便许多。因为这样可以一一对应相加,就像这样string str1,str2;

int a[250],b[250],len;   //数组的大小决定了计算的高精度最大位数  
  int i;  
  memset(a,0,sizeof(a));  
  memset(b,0,sizeof(b));  
  cin>>str1>>str2;   //输入两个字符串  
  a[0]=str1.length();  //取得第一个字符串的长度  
  for(i=1;i<=a[0];i++)  //把第一个字符串转换为整数,存放在数组a中  
    a[i]=str1[a[0]-i]-'0';  ///////////////这就是倒序输入!!
  b[0]=str2.length();   //取得第二个字符串长度  
  for(i=1;i<=b[0];i++)   //把第二个字符串中的每一位转换为整数,存放在数组B中  
    b[i]=str2[b[0]-i]-'0';  ////////////////这就是倒序输入!!!
  len=(a[0]>b[0]?a[0]:b[0]);   //取两个字符串最大的长度  
原文代码链:https://blog.csdn.net/fanyun_01/article/details/79967170
(!!!!!!!看正确的点这个链接!通俗易懂)
		也可以这样倒序输入`在这里插入代码片`char a1[100],b1[100];     

int a[100],b[100],c[100],lena,lenb,lenc,i,x;    
memset(a,0,sizeof(a));     
memset(b,0,sizeof(b));     
memset(c,0,sizeof(c));                                                  
gets(a1);  //先存在两个字符数组中
gets(b1);      
ena=strlen(a1);   
 lenb=strlen(b1);   
 for (i=0;i<=lena-1;i++) a[lena-i]=a1[i]-48;//倒序读入进另外的数组
for (i=0;i<=lenb-1;i++) b[lenb-i]=b1[i]-48;
原文地址:https://www.cnblogs.com/iss-ue/p/12679643.html