中易网

c++编程大整数加减乘除

答案:2  悬赏:0  
解决时间 2021-01-12 05:02
c++编程大整数加减乘除
最佳答案
这个用字符串来解决
加减很简单

加法思路:
char a[1000],b[1000],c[1000]; //这个长度自己定义
int a1[1000]={0},b1[10000]={0},c[10000]={0};//这个是转换成int的形式,要付初始值
int la,lb,lc,i,j;
gets(a);
gets(b);
la=strlen(a); //计算长度
lb=strlen(b);
lc=la>lb?la:lb;
strrev(a);//反序
strrev(b);
//转换成int型
for(i=0;ia1[i]=a[i]-48;
for(i=0;ib1[i]=b[i]-48;
c1[0]=a1[0]+b1[0];
for(i=1;i{
c1[i]=a1[i]+b1[i]+c1[i-1]/10;//这个需要加上上一位的进位
c1[i-1]%=10;//取出上一位的个位
}
if(c1[lc-1]>9)//处理最高位,要是大于9,则处理方式一样,lc在加一位
{
c1[lc]=1;
c1[lc-1]%=10;
lc++;
}
for(i=0;ic[i]=c1[i]+48;
c[lc]='\0';
strrev(c); //再反序回去,c就是计算的结果

减法思路:上面下面处理都和加法一样,只是中间有所区别,前面的和后面的就不写了,只写中间的思路,还有一个地方,就是负号的判断
定义和加法一样,多一个标示flag
int flag=1;
if(la{
strcpy(c,a); //交换ab,并且要置标志
strcpy(a,b);
strcpy(b,c);
flag=0;
}
//转换不写了,和加法一样,下面写转换代码
c1[0]=a1[0]-b1[0];
for(i=1;i{
c1[i]=a1[i]-b1[i];
if(c1[i-1]<0)
{
c1[i-1]+=10;
c1[i]-=1;
}
}
//处理一下最高位剩下的那些零
while(c1[lc-1])
lc--;
剩下的就是赋值c和反序了和标志位的设置,不写了

乘法除法思路也不难
乘法是多次加法,如a*b,那么就是a加b次,思路就是c每加一次a,b减去1,直到b成为零
除法就是多次减法的集合,记录减得次数
设加法的子函数名称为void jia(char *a,char *b,char *c),ab是加数,c是结果
减法子函数void jian(char *a,char *b,char *c),ab是减数,c是结果
全部回答
我暂时保留我的看法!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
ghost XP SP3的2017怎么安装
你太棒了求解: 什么意思
把14拆成若干个自然数的和,并且使这些自然数
《与植物相处》中“看一会儿书种一会儿庄稼,
bread这些单词里,哪些要用复数表示这
亚洲红石榴酒多少钱一瓶
3250kva配变毎月电量300000万kwh为什么还产生
我为新时代添光彩小短文
什么叫市场资本利率
卖手机的是骗子安小雅那个号码,空间评论不了
2016年兴化拿结婚证要多少钱?听说要交5000块
青枫线可以到上海地铁2号线吗?
安居旅馆(秦皇岛抚宁)地址有知道的么?有点事
“ねえ、そろそろ会场に着いてもいいころじゃ
《三国演义》中的经典遗言有哪些
推荐资讯
网上买的好的创意礼物有哪些
普明酒店地址好找么,我有些事要过去
三国演义刘关张结拜时的背景音乐叫什么名字
想干食尚客串串火锅不知道怎么样,有没有做过
我是个新手想学做网站想买个云服务器来练习练
如果打核战,中国会怎样
夏普求大神如何插sim卡???
中国移动黄沙岙移动零售点地址在什么地方,想
如果小智带着忍者蛙回关东遇见小霞会怎样
“徒长枝”是什么意思?
如果瓦坎达存在于事实世界,那么西方将如何从
有人知到这支歌我歌名吗:.........在那白雪
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?