您的位置:首页 > 其它

大数的四则运算(转)

2013-03-24 13:30 211 查看
原文网址:http://www.cnblogs.com/dolphin0520/archive/2011/04/11/2012867.html

在处理大数的运算时,一般采用数组去模拟,下面介绍大数的加、减、乘、除四则运算的实现方法。

1.加法。

如:

Input: 123456789123456789123456789

1

Output:123456789123456789123456790

输入采用字符数组保存,然后将输入存在整形数组里,然后逐位相加即可,同时注意进位处理。

View Code

除法模板

#include<stdio.h>
#include<string.h>

int len1,len2;
char s1[905];
char s2[905];
int re[905];

void sub()
{
int i=0;
int j;
while(1)
{
if(s1[i]=='0')
i++;
else
{
j=i;
break;
}
}
for(;i<len2;i++)
{
s1[i]=s1[i]-s2[i]+'0';
}
for(i=len2-1;i>j;i--)    //低位开始检测是否小于0
{
if(s1[i]<'0')
{
s1[i]+=10;
s1[i-1]--;
}
}
}

int main(void)
{
int i,p;
while(scanf("%s%s",s1,s2)==2)
{
len1=strlen(s1);
len2=strlen(s2);
if(len1<len2||(len1==len2&&strncmp(s1,s2,len2)<0))   //如果a<b,直接输出0
{
printf("0\n");
continue;
}
p=0;
while(1)
{
re[p]=0;
while(strncmp(s1,s2,len2)>=0)       //一直进行减法,直到不能减为止
{
sub();
re[p]++;
}
p++;
if(len1==len2)
break;
for(i=len2-1;i>=0;i--)             //在s2前面补0,以便进行减法运算
{
s2[i+1]=s2[i];
}
s2[0]='0';
len2++;
s2[len2]='\0';
}
i=0;
while(1)
{
if(re[i]==0)
i++;
else
break;
}
for(;i<p;i++)
printf("%d",re[i]);
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: