高精度1--加法
一、心得
自己写的东西才是自己的,看一百遍都不一定看得会
//没有考虑到输出的时候a[0]是0的情况
//边界情况多多考虑
二、题目及分析
计算12345678987755+4324324324
/*
高精度加法:模拟手算 1、初始化:数组和倒序2、加:相加和进位3、输出:倒序 */三、代码及结果
自己的:
1 /* 2 高精度加法: 3 模拟手算 4 1、初始化:数组和倒序 5 2、加:相加和进位 6 3、输出:倒序 7 */ 8 #include9 #include 10 #define Max 10511 using namespace std;12 /*13 s=1234514 length=515 a[5] 0-416 1 s417 2 s318 3 s219 4 s120 5 s021 */22 //初始化字符串:变为int数组和倒序 23 void init(string &s,int (&a)[Max]){24 int length=s.length();25 a[0]=length;26 for(int i=1;i<=length;i++){27 a[i]=s[a[0]-i]-'0';//a[0]这里注意下 28 }29 30 return ;31 }32 //显示数组 33 void printArray(int (&a)[Max]){34 //print35 for(int i=1;i<=a[0];i++){36 //cout< <<" ";37 printf("%3d ",a[i]);38 } 39 cout< 0) a[0]++; //修正a的位数(a+b最多只能进一位) 57 }58 //输出结果59 void outputAns(int (&a)[Max]){60 //没有考虑到输出的时候a[0]是0的情况 61 //边界情况多多考虑 62 if(a[0]==0){cout<<0< =1;i--){64 cout< >s1>>s2;73 cout< <<" "< <
书上的:
1 /* 2 高精度就是在模拟手算 3 用计算机模拟手算的方法就可以得到各种高精度 4 */ 5 #include6 using namespace std; 7 //初始化字符数组, 8 //将数串s转换为数组a,并倒序存储. 9 void init(int a[]){10 string s;11 cin>>s;//读入字符串12 a[0]=s.length(); //用a[0]计算字符串s的位数 13 for(int i=1;i<=a[0];i++){14 a[i]=s[a[0]-i]-'0';//将数串s转换为数组a,并倒序存储.15 }16 } 17 //高精度加法18 void jia(){19 int i,k;20 if(a[0] 0)a[0]++;//修正a的位数(a+b最多只能进一位) 28 } 29 //输出30 void print(int a[]) //打印输出31 { 32 int i;33 if(a[0]==0){cout<<0< =1;i--)cout<