资源描述:
《信息学奥赛一本通算法(c++版)基础算法:高精度计算》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、信息学奥赛一本通算法(C++版)基础算法:高精度计算高精度加法(大位相加)#includeusingnamespacestd;intmain(){chara1[100],b1[100];inta[100],b[100],c[100];//a,b,c分别存储加数,加数,结果intlena,lenb,lenc,x,i;memset(a,0,sizeof(a));//数组a清零memset(b,0,sizeof(b));//数组b清零memset(c,0,sizeof(c));//数组c清零//gets(a1)
2、;//gets(b1);//getchar();while(scanf("%s%s",&a1,&b1)!=EOF){lena=strlen(a1);lenb=strlen(b1);for(i=0;i<=lena;i++)a[lena-i]=a1[i]-'0';//将数串a1转化为数组a,并倒序存储//a[i]=a1[lena-i-1]-48;for(i=0;i<=lenb;i++)b[lenb-i]=b1[i]-'0';//将数串a1转化为数组a,并倒序存储//b[i]=b1[lenb-i-1]-48;lenc=1;//lenc表示第
3、几位x=0;//x是进位while(lenc<=lena
4、
5、lenc<=lenb){c[lenc]=a[lenc]+b[lenc]+x;//第lenc位相加并加上次的进位x=c[lenc]/10;//向高位进位c[lenc]%=10;//存储第lenc位的值lenc++;//位置下标变量}c[lenc]=x;if(c[lenc]==0)lenc--;//处理最高进位for(i=lenc;i>=1;i--)cout<
6、usingnamespacestd;intmain(){charn[256],n1[256],n2[256];inta[256],b[256],c[256];intlena,lenb,lenc,i;memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));while(scanf("%s%s",&n1,&n2)!=EOF)//n1为被减数,n2为减数{if(strlen(n1)7、
8、(strlen(n1)==strlen(n2)&&strcmp
9、(n1,n2)<0))//strcmp()为字符串比较函数,当n1==n2,返回0;n1>n2时,返回正整数;n110、;i<=lenb;i++)b[lenb-i]=(int)(n2[i]-'0');//减数放入数组b中i=1;while(i<=lena
11、
12、i<=lenb){if(a[i]1))lenc--;//最高位的0不输出for(i=lenc;i>=1;i--)cout<