高精度加法(大位相加)
1 #include2 using namespace std; 3 int main() 4 { 5 char a1[100],b1[100]; 6 int a[100],b[100],c[100];//a,b,c分别存储加数,加数,结果 7 int lena,lenb,lenc,x,i; 8 memset(a,0,sizeof(a));//数组a清零 9 memset(b,0,sizeof(b));//数组b清零10 memset(c,0,sizeof(c));//数组c清零11 //gets(a1);12 //gets(b1);13 //getchar();14 while(scanf("%s%s",&a1,&b1)!=EOF)15 {16 lena=strlen(a1);17 lenb=strlen(b1);18 for(i=0;i<=lena;i++)19 a[lena-i]=a1[i]-'0';//将数串a1转化为数组a,并倒序存储20 //a[i]=a1[lena-i-1]-48;21 for(i=0;i<=lenb;i++)22 b[lenb-i]=b1[i]-'0';//将数串a1转化为数组a,并倒序存储23 //b[i]=b1[lenb-i-1]-48;24 lenc=1; //lenc表示第几位25 x=0; //x是进位26 while(lenc<=lena||lenc<=lenb)27 {28 c[lenc]=a[lenc]+b[lenc]+x;//第lenc位相加并加上次的进位29 x=c[lenc]/10;//向高位进位30 c[lenc]%=10;//存储第lenc位的值31 lenc++;//位置下标变量32 }33 c[lenc]=x;34 if(c[lenc]==0)35 lenc--; //处理最高进位36 for(i=lenc;i>=1;i--)37 cout<
高精度减法(大位相减)
1 #include2 using namespace std; 3 int main() 4 { 5 char n[256],n1[256],n2[256]; 6 int a[256],b[256],c[256]; 7 int lena,lenb,lenc,i; 8 memset(a,0,sizeof(a)); 9 memset(b,0,sizeof(b));10 memset(c,0,sizeof(c));11 while(scanf("%s%s",&n1,&n2)!=EOF)//n1为被减数,n2为减数12 {13 if(strlen(n1) <0))//strcmp()为字符串比较函数,当n1==n2,返回0;n1>n2时,返回正整数;n1 1))39 lenc--;//最高位的0不输出40 for(i=lenc;i>=1;i--)41 cout<