鱼C论坛

 找回密码
 立即注册
查看: 2127|回复: 0

[技术交流] 高精度加减法(C++)

[复制链接]
发表于 2019-7-4 12:50:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
高精度加法
  1. #include<iostream>  
  2. #include<string>  
  3. #include<cmath>  
  4. #include<cstdio>  
  5. #include<cstring>  
  6. #include<cstdlib>  
  7. #include<iomanip>  
  8. using namespace std;  
  9. int main(){  
  10.     //iomanip的语法(保留x位小数):cout<<fixed<<<setprecision(正整数)<<数;  
  11.     char a1[1000],b1[1000];  
  12.     int a[1000],b[1000],c[3000]={},lena,lenb,lenc,i,x,sum;  
  13.     memset(a,0,sizeof(a));  
  14.     memset(b,0,sizeof(b));  
  15.     memset(c,0,sizeof(c));  
  16.     gets(a1);  
  17.     gets(b1);  
  18.     lena=strlen(a1);  
  19.     lenb=strlen(b1);  
  20.     for(i=0;i<=lena-1;i++){  
  21.         a[lena-i]=a1[i]-48;  
  22.     }  
  23.     for(i=0;i<=lenb-1;i++){  
  24.         b[lenb-i]=b1[i]-48;  
  25.     }  
  26.     lenc=1;  
  27.     x=0;  
  28.     while(lenc<=lena||lenc<=lenb){  
  29.         sum=a[lenc]+b[lenc]+x;  
  30.         c[lenc]+=sum;  
  31.         x=c[lenc]/10;  
  32.         c[lenc]%=10;  
  33.         lenc++;  
  34.     }  
  35.     c[lenc]=x;  
  36.     if(c[lenc]==0){  
  37.         lenc--;  
  38.     }  
  39.     for(i=lenc;i>=1;i--){  
  40.         cout<<c[i];  
  41.     }  
  42.     cout<<endl;  
  43.     return 0;  
  44. }
复制代码

高精度减法
  1. #include<iostream>  
  2. #include<string>  
  3. #include<cmath>  
  4. #include<cstdio>  
  5. #include<cstring>  
  6. #include<cstdlib>  
  7. #include<iomanip>  
  8. using namespace std;  
  9. int main(){  
  10.     //iomanip的语法(保留x位小数):cout<<fixed<<<setprecision(正整数)<<数;  
  11.     char n[1000],n1[1000],n2[1000];  
  12.     int a[1000],b[1000],c[1000]={},lena,lenb,lenc,i;  
  13.     memset(a,0,sizeof(a));  
  14.     memset(b,0,sizeof(b));  
  15.     memset(c,0,sizeof(c));  
  16.     gets(n1);  
  17.     gets(n2);  
  18.     if(strlen(n1)<strlen(n2)||(strlen(n1)<strlen(n2)&&strcmp(n1,n2)<0)){  
  19.         strcpy(n,n1);  
  20.         strcpy(n2,n);  
  21.         cout<<"-";  
  22.     }  
  23.     lena=strlen(n1);  
  24.     lenb=strlen(n2);  
  25.     for(i=0;i<=lena-1;i++){  
  26.         a[lena-i]=int(n1[i]-'0');  
  27.     }  
  28.     for(i=0;i<=lenb-1;i++){  
  29.         b[lenb-i]=int(n2[i]-'0');  
  30.     }  
  31.     i=1;  
  32.     while(i<=lena||i<=lenb){  
  33.         if(a[i]<b[i]){  
  34.             a[i]+=10;  
  35.             a[i+1]--;  
  36.         }  
  37.         c[i]=a[i]-b[i];  
  38.         i++;  
  39.     }  
  40.     lenc=i;  
  41.     while(c[lenc]==0&&lenc>1){  
  42.         lenc--;  
  43.     }  
  44.     for(i=lenc;i>=1;i--){  
  45.         cout<<c[i];  
  46.     }  
  47.     cout<<endl;  
  48.     return 0;  
  49. }  
复制代码


这是代码,我怕太耗内存,就直接写上去了。。。

                               
登录/注册后可看大图

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-11 00:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表