信息学奥赛一本通算法(C版)基础算法高精度计算

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

高精度加法(大位相加)

#include

using namespace std;

int main()

{

char a1[100],b1[100];

int a[100],b[100],c[100];>

using namespace std;

int main()

{

char n[256],n1[256],n2[256];

int a[256],b[256],c[256];

int lena,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)n2时,返回正整数;n1

{

strcpy(n,n1);//将n1数组的值完全赋值给n数组

strcpy(n1,n2);

strcpy(n2,n);//处理被减数和减数时,交换被减数和减数cout<<"-";//交换了减数和被减数,结果为负数

}

lena=strlen(n1);

lenb=strlen(n2);

for(i=0;i<=lena;i++)

a[lena-i]=(int)(n1[i]-'0');//被减数放入数组a中

for(i=0;i<=lenb;i++)

b[lenb-i]=(int)(n2[i]-'0');//减数放入数组b中

i=1;

while(i<=lena||i<=lenb)

{

if(a[i]

{

a[i]+=10;//不够减,那么向高位借1当10

a[i+1]--;

}

c[i]=a[i]-b[i];//对应位相减

i++;

}

lenc=i;

while((c[lenc]==0)&&(lenc>1))

lenc--;//最高位的0不输出

for(i=lenc;i>=1;i--)

cout<

cout<

}

return 0;

}

相关文档
最新文档