高精度加法:
解决整型数据精度不够的问题,通过数组来容纳数字的每位数从而实现精度自由
方法;逆序
要点1:在两数每位相加后不超过9的情况下,做到字符串相加;
要点2:若超过9,则需进位,则前一位数加1;
要点3:若最高位超过9,则需添加一位数; eg:
此程序目标:1234 加 9911 等于 11145
基于以上思考来调整算法
#include<iostream>
using namespace std;
void Switch(string str,int a[]);
//src.size() 和 src.length() 功能完全一样,都是返回字符串长度,只是命名不同:
int main(){
string s1,s2;
int a[101]={0},b[101]={0},c[101]={0};
int i;
cout<<"请输入s1、s2:";
cin>>s1>>s2;
Switch(s1,a);
Switch(s2,b);
int la=s1.size();
int lb=s2.size();
int lc=max(la,lb)+1;
/*中途检验用
for(i=0;i<4;i++)
cout<<a[i];
cout<<endl;
for(i=0;i<4;i++)
cout<<b[i];
*/
for(i=0;i<lc;i++){
c[i]=a[i]+b[i]+c[i];
c[i+1]=c[i]/10;
c[i]=c[i]%10;
}
while (lc > 1 && c[lc-1] == 0) {
lc--;
} //把逆序时的结果前面的零全部删掉
for(int j=lc-1;j>=0;j--){
cout<<c[j];
}
}
void Switch(string str,int a[]){
for(int i=0;i<str.size();i++){
a[str.size()-1-i]=str[i]-'0';
}
}
结果运行顺利!