前言:
如今咱们对“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语言做加减法