龙空技术网

C语言超大数加法3(用数组的1个单元存储3位整数)

滴水穿石hgn 101

前言:

如今咱们对“c语言做加减法”可能比较讲究,大家都需要分析一些“c语言做加减法”的相关资讯。那么小编同时在网上网罗了一些有关“c语言做加减法””的相关文章,希望兄弟们能喜欢,各位老铁们一起来学习一下吧!

//超大数加法3(用数组的1个单元存储3位整数)

#include <stdio.h>

#include <string.h>

#define N 100//定义常数N(数的位数)

main ()

{ char bc[N*3],cc[N*3]; //字符串数组:被加数bc,加数cc

unsigned bz[N*3]={},b[N]={},cz[N*3]={},c[N]={}; //整数数组:被加数b,加数c

int x,i,lbz,lb,lcz,lc,jw=0; //环变量x,i;位数:被加数lb,加数lc(带z表示总);进位jw

//一、输入:

printf("请输入被加数:");gets(bc); //读入被加数字符串bc

printf("请输入加数:");gets(cc); //读入加数字符串cc

//二、转换:

lbz=strlen(bc);lb=(lbz-1)/3+1; //求被加数总位数lbz及单元数lb

for(x=1;x<=lbz;x++) {bz[x]=bc[lbz-x]-48;} //被加数字符串转换成整数

for(i=1;i<=lb;i++) //每3位为1单元,重新编号,位数:987 654 321

{ x=i*3; //单元数:3 2 1

b[i]=bz[x]*100+bz[x-1]*10+bz[x-2]; //求第i单元

}

lcz=strlen(cc);lc=(lcz-1)/3+1; //求加数总位数lcz及单元数lc

for(x=1;x<=lcz;x++) {cz[x]=cc[lcz-x]-48;} //加数字符串转换成整数

for(i=1;i<=lc;i++) //每3位为1单元,重新编号:位数:987 654 321

{ x=i*3; //单元数:3 2 1

c[i]=cz[x]*100+cz[x-1]*10+cz[x-2];

}

//三、运算:

if(lc>lb) lb=lc; //保证lb是最大单元数

for(x=1;x<=lb;x++) //从低单元到高单元

{ b[x]+=c[x]+jw; //求和

jw=b[x]/1000;b[x]%=1000; //求进位及本位

}

if(jw>0) {lb++;b[lb]=jw;} //处理首单元进位及总单元数

//四、输出:

printf("%s+%s=",bc,cc);

printf(" %d",b[lb]); lb--; //输出首单元

for(x=lb;x>=1;x--) //输出其余单元:

{ if(b[x]>=100) printf(",%d ",b[x]);

else if(b[x]>=10) printf(",0%d ",b[x]);

else printf(",00%d ",b[x]);

}

}

标签: #c语言做加减法