题目分析:高精度的算法肯定会用到字符串,所以设char数组就可以了。
第一步:设两个char数组,求出两者长度的最大者(方便输出最后的值)。
第二步:设两个int数组,(为什么第一个不是int数组,可以自己编程一下试试)将第一步的两个char数组进行倒叙转换。
第三步:int数组两者相加,以最大的长度为限定条件,关于进位问题,看具体代码即可。
第四步:看数组两者相加进了一位,如果最高位的上一位的结果不为零,则输出时的最大长度++;
第五步:倒序输出即可。
#include <cstdio> #include <iostream> #include <string> #include <cstring> #include <cmath> using namespace std; int main () { char a[100000]; //第一步 char b[100000]; cin >> a >> b; int len1=strlen(a); int len2=strlen(b); int len=max(len1,len2); int aa[100000]; // 第二步(你自己定义了int数组之后,会自动将其值设为0) int bb[100000]; for (int i=0;i<len1;i++) aa[i]=a[len1-i-1]-'0'; for (int i=0;i<len2;i++) bb[i]=b[len2-1-i]-'0'; for (int i=0;i<len;i++) //第三步 { aa[i]=aa[i]+bb[i]; if(aa[i]>=10) { aa[i]=aa[i]-10; aa[i+1]++; } } if(aa[len]!=0)。 //第四步 { len++; } for (int i=len-1;i>=0;i--) //第五步 { cout << aa[i]; } cout << endl; return 0; }