c++编程大整数加减乘除
答案:2 悬赏:0
解决时间 2021-01-12 05:02
- 提问者网友:杀手的诗
- 2021-01-11 12:40
c++编程大整数加减乘除
最佳答案
- 二级知识专家网友:妄饮晩冬酒
- 2021-01-11 14:19
这个用字符串来解决
加减很简单
加法思路:
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;i a1[i]=a[i]-48;
for(i=0;i
b1[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;i c[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是结果
加减很简单
加法思路:
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;i
for(i=0;i
b1[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;i
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是结果
全部回答
- 1楼网友:枭雄戏美人
- 2021-01-11 14:35
我暂时保留我的看法!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯